您的位置:首页 > Web前端 > JavaScript

javascript积累七

2015-12-08 22:26 676 查看
javascript高级程序设计里看的

function createFunctions(){
var result = new Array();
for(var i=0;i<10;i++){
result[i] = funciton(){
return i;
};
}
return result;
}

最终result数组里的每个无素都为10,因为作用域链的关系,闭包只能取得包含函数中任何变量的最后一个值。
要想返回0、1、2.……

可以这样修改下:

function createFunctions(){
var result = new Array();
for(var i=0;i<10;i++){
result[i] = functions(num){
return function(){
return num;
}
}(i);
}
return result;
}

上面通过创建另一个匿名函数强制让闭包的行为符合预期
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: