怎么轻易理解看似困难的js闭包问题

 时间:2026-02-14 17:56:47

1、首先,理解一下闭包,就是能够读取其他函数内部变量的函数,函数没有被释放,整条作用域链上的局部变量都将得到保留,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成‘定义在一个函数内部的函数’。

怎么轻易理解看似困难的js闭包问题

2、直接上代码:这里我解释一下,关键的代码执行是

result[i] = function() {

//隐藏的i在此,这里的i=10

return i;

}

这一句是关键,就是当执行完循环之后,i一直存在内存中,还没被释放。也不会释放。然后当执行到

for(var i = 0; i < funcs.length; i++) {

console.log(funcs[i]());

}

的时候,函数执行的是createFunctions()函数内的i变量,而此时的i是固定是10

运行结果是:10个10

怎么轻易理解看似困难的js闭包问题

怎么轻易理解看似困难的js闭包问题

3、如果我们想运行结果是0到9,我们可以稍微改造一下,

result[i] = (function() {

return i;

})();

修改成自执行函数,还有最后一行不需要再执行函数了,直接修改成funcs[i],

因为,我们每次执行的时候,result[i]已经自执行了,内部的i就是当时实时的i。

怎么轻易理解看似困难的js闭包问题

怎么轻易理解看似困难的js闭包问题

  • js如何判断闭包
  • JS中this关键字的解释
  • 通过示例彻底搞懂js闭包
  • python里简单理解闭包的作用
  • js函数闭包的作用
  • 热门搜索
    石斛兰的养殖方法 海参怎么做好吃又简单 喊麦词大全 羽绒服品牌大全女装 家常酱牛肉 清胃火去口臭的方法 长寿花的养殖方法 炒茄子丝的家常做法 冰雹是怎么形成的 幸福树的养殖方法