for(var i=1;i<=20;i++){
var x=i;
setTimeout(function () {
console.log(0.05*x);
},50*x);
}
for(var i=1;i<=20;i++){
(function (x) {
setTimeout(function () {
console.log(0.05*x);
},50*x);
})(i);
}
1 回答
已采纳
pardon110
TA贡献1038条经验 获得超227个赞
前者是值引用,后者是值复制。换句话而言,后者才是闭包(立即函数调用表达式会形成一个执行环境,该环境有内部函数执行体依赖的每次循环变量的副本),而前者在循环体结束后,执行循环体,此时函数体引用的的i值是20,而非每次的循环变量值
添加回答
举报
0/150
提交
取消