B-001
let i;
for (i = 0; i < 3; i ++) {
const log = () => {
console.log(i)
}
setTimeout(log,100);
}
#答案: 3 3 3
#解析:
for() 迭代3次,在每次迭代时候,都会创建一个新函数log,log函数捕获变量i,然后, setTimeout()调度log()的执行。
当for循环完成时候变量i的值为3.
100ms后setTimeout调用的3 个 log() 回调。log() 读取变量 i 的当前值,即 3。