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;