for (var i = 1;i <= 5;i ++) {
setTimeout(function timer() {
console.log(i)
},1000)
}
执行程序时,先把计时器的函数放在线程任务中,相当于setTimeout(线程1,1000),在执行完主任务for语句后(时间远小于1000)再调用线程,而此时i是全局变量,值为5,所以结果是:5,5,5,5,5同时出现
for (var i = 1;i <= 5;i ++) {
setTimeout(function timer() {
console.log(i)
},1000*i)
}
每隔一秒出现一次5
for (let i = 1;i <= 5;i ++) {
setTimeout(function timer() {
console.log(i)
},1000*i)
}
let为局部变量,出了大括号被清空,所以结果是每秒依次弹出:12345