关于闭包的一段代码的见解

function createFunctions(){
    var result = new Array();
    for (var i=0; i < 10; i++){
        result[i] = function(){
            return i;
        };
    }
    return result;
}
var funcs = createFunctions();
for (var i=0; i < funcs.length; i++){
    console.log(funcs[i]());
}

函数createFunctions中,for循环里面的result[i]()函数其实只是被定义出来,但是并没有被运行,因此最终的循环结果只是使i=10的同时,使result.length=10(10次循环);

而函数外的for循环中,因为createFunctions函数中的i=10,所以funcs[i]()相当于执行了一次result[10]().

因此结果为输出10个10;

posted @ 2016-07-17 11:28  bokeyuan990  阅读(92)  评论(0编辑  收藏  举报