Javascript函数结束后,它的内部变量仍可通过闭包访问?

时间:2016-08-19 07:01:41

标签: javascript closures cycle

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”的生命周期结束了!

0 个答案:

没有答案