怎么轻易理解看似困难的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函数闭包的作用
  • 热门搜索
    旧金山旅游 湖南省旅游局 西塘旅游 长春大学旅游学院官网 庆阳旅游 阿克苏旅游 绵阳旅游景点 惠州旅游攻略 西藏拉萨旅游 通辽旅游