怎么轻易理解看似困难的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函数闭包的作用
  • 热门搜索
    路亚翘嘴用什么假饵 m2是什么意思 email是什么意思 跌宕起伏的意思 battle是什么意思 灵芝功效与作用 风生水起的意思 杜仲功效与作用 不可理喻的意思 独活的作用与功效