function create(){
var ret=new Array();
for(var i=0;i<10;++i){
ret[i]=function(){return i;};
}
return ret;
};
var a1=create();
console.log(a1[2]());
上面的代码将打印“10”。
我知道里面的“create()”,for循环中的变量“i”,执行上下文为“create()”,因此“ret”的10个元素都是将返回“10”的函数。所以在“create()”里面,ret2将返回10.没问题。
但在“create()”之外,没有“i”了。如果我尝试“console.log(i)”,它将给出如下的异常:
console.log(i);
^
ReferenceError: i is not defined
为什么,关闭仍然可以访问“i”作为参考,而外部块不能? “i”的生命周期结束了!