/*
* 定时器是异步编程,每一轮循环设置的定时器,无需等定时器触发,继续下一轮循环
*/
for (var i = 0; i < 10; i++) {
setTimeout(() => {
console.log(i); // 输出10次10
}, 1000);
}
for (let i = 0; i < 10; i++) {
// let 存在块级作用域,每一次循环都会在当前作用域中形成一个私有变量 i , 当定时器执行的时候,所使用的 i 就是所处作用域的 i
setTimeout(() => {
console.log(i); // 0---9
}, 1000);
}
// 使用闭包 提升函数作用域
for (let i = 0; i < 10; i++) {
~ function() {
setTimeout(() => {
console.log(i); // 0---9
}, 1000);
}(i);
}