1. let 定义在外面
function countdown(){
let i;
for(i=5;i>=0;i--){
setTimeout(function(){
console.log(i);
},(5-i)*1000);
}
}
countdown(); // 6个-1
2. let 定义在里边
function countdown(){
for(let i=5;i>=0;i--){
setTimeout(function(){
console.log(i);
},(5-i)*1000);
}
}
countdown(); // 5 4 3 2 1 0
3.var 定义变量
function countdown(){
for(var i=5;i>=0;i--){
setTimeout(function(){
console.log(i);
},(5-i)*1000);
}
}
countdown(); // 6个-1
实际上 setTimeout 的调用是同步的,真正的异步调用是传到 setTimeout 中的函数。