function f1(){
var result=[];
for(var i=0;i<10;i++){
result[i]=function(){
return i
}
}
return result
}
console.log( f1()[0]() )
console.log( f1()[1]() )
结果都是10,我的理解是这样的:
调用f1()[0]()是先执行第一个小括号f1(),此时result[0],result[1]..的值都是一个函数而未赋具体的值,也就是下边这代码并未执行
return i
,尽管此时的i是0,1,2,3...;f1()执行完后i的值变成了10;而执行到第二个小括号f1()[0]()时,
return i
这段代码才真正的起作用,但此时i变成了10
问一下我的理解对吗
闭包是一个绑定执行环境的函数,执行环境中i经过for循环变成10了,后面执行函数的时候,读到的值就是10