// 1. for 循环 同步输出 0 1 2 3 4
for (var i = 0;i < 5; i++){
console.log('1:' + i); // 0 1 2 3 4
}
console.log(`console.log i:${i}`); // 5
// 2.for 循环 setTimeout 异步回调函数 不能异步输出 0 1 2 3 4
for (var j = 0;j < 5;j++){
setTimeout(() =>{
console.log('2:' + j); // 5 5 5 5 5
}, i*1000)
}
console.log(`console.log j:${j}`); // 5
// 3. for 循环 利用“闭包” 异步输出 0 1 2 3 4
for(var m = 0; m < 5; m++) {
(function (m) {
setTimeout(() => {
console.log('3:' + m); // 0 1 2 3 4
}, m * 1000)
})(m)
}
console.log(`console.log m:${m}`); // 5
// 4. for 循环 利用 es6 let, 异步输出 0 1 2 3 4
for(let n = 0; n < 5; n++){
setTimeout(() => {
console.log('4:' + n); // 0 1 2 3 4
})
}
// console.log(n); // let 在“循环内” 声明块级作用域