下面这段代码是js高级程序设计第三版书上的一个例子,请问这个是否使用了闭包,书上说返回结果会全是10,但我测试发现返回结果是0~9function createFunctions(){
var result = new Array();
for(var i=0;i<10;i++){
result[i] = function(){
return i;
}
}
return result;
}
console.log(createFunctions());
1 回答
已采纳
qq_青枣工作室_0
TA贡献446条经验 获得超754个赞
是用了闭包,而且结果全是10。
你看到的0~9,是你自己误会了。因为 console.log(createFunctions()) 这里打印一个数组,你看到的0~9只不过是这个数组的索引。
这样测试:
function createFunctions(){ var result = new Array(); for(var i=0;i<10;i++){ result[i] = function(){ return i; } } return result; } var funcs = createFunctions(); // 是一个数组,里面有10个function console.log('第0个:' + funcs[0]()); // 测试第0个function console.log('第1个:' + funcs[1]()); // 测试第1个function for(var j=2; j<funcs.length; j++) { // 测试剩余的function console.log('第' + j + ':' + funcs[j]()); }
添加回答
举报
0/150
提交
取消