这个问题已经有了一个答案:
在这两种情况下,我都有不同的输出。为什么let和var关键字在这里起着重要作用?为什么它在第一种情况下影响setTimeout函数的同步性质,输出都是数组的元素,但是在第二部分,我没有定义。
const arrs = [20,24,30,42];
for( let i = 0; i< arrs.length ; i++) {
setTimeout( () => {
console.log('value at index '+i+' is '+arrs[i]);
}, 3000);
}
const arr = [10, 12, 15, 21];
for (var i = 0; i < arr.length; i++) {
setTimeout( () => {
console.log('Index: ' + i + ', element: ' + arr[i]);
}, 3000);
}
发布于 2018-06-06 18:12:31
由于这个原因,当循环中的函数运行时,变量i=3,因此它是未定义的。
https://stackoverflow.com/questions/-100004776
复制相似问题