for(var i = 0 ;i<3;i++){
setTimeout(()=>console.log(i),1)
}
for (let i = 0; i < 3; i++) {
setTimeout(()=>console.log(i),1)
}
A: 0 1 2 和 0 1 2
B: 0 1 2 和 3 3 3
C: 3 3 3 和 0 1 2 ✔
* 由于JavaScript的事件执行机制,settimeout 函数真正被执行时,循环已经走完
* 第一个循环中的变量 i 是使用 var 关键字声明的, 因此该值是全局的
在循环期间,我们每次使用一元运算符 ++ 都会将 i 的值 增加 1
再次在调用settimeout 时, i 的值已经是 3 了
* 第二个循环中,使用let关键字声明变量 i,
使用let (const)关键字声明的变量是具有块作用域的(块是{}之间的任何东西)
每次迭代, i 将被创建为一个新值,每个循环内的块级作用域都会有一个 i