js闭包的一个问题
发布网友
发布时间:2022-04-18 09:28
我来回答
共2个回答
热心网友
时间:2022-04-18 10:57
跳出该for循环的条件是i的值为10。这个循环一共循环10次(0 - 9)。因为闭包保存的是整个变量对象,而不是某个特殊变量。所以该闭包保存的是i的最后一个值10。
热心网友
时间:2022-04-18 12:15
function worker(n){
return function(){
console.log(n);
}
}
for(var i = 0; i < 10; i++) {
setTimeout(worker(i), 1000);
}
或者更简洁的写法:
for(var i = 0; i < 10; i++){
(function(){
var index = i;
setTimeout(function(){
console.log(index);
}, 1000);
})();
}
这个问题可以用闭包来解决,输出结果为:
0
1
2
3
4
5
6
7
8
9