Asynchronous scope
本问题已经有最佳答案,请猛点这里访问。
如果有人能帮我的话,我真的不太明白:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | let arr = [1,2,3,4,5,6,7]; let b = 0 for (let a of arr) { setTimeout(() => { console.log(b, a) }, 2000) b = b + 1; } /* Output 7 1 7 2 7 3 7 4 7 5 7 6 7 7 */ |
假设
区别在于作用域变量如何与
直到循环结束后,超时才开始触发。这时,每个超时函数的作用域都被赋予了不同的