for(var i = 0; i < 5; i++) {
    setTimeout(function () {
        console.log(i);
    });
}
console.log('a');

要想输出0,1,2,3,4 怎么改造:
1. let 定义,形成闭包
for(let i = 0; i < 5; i++) {
    setTimeout(function () {
        console.log(i);
    });
}

2. 闭包,立即执行函数
for(let i = 0; i < 5; i++) {
(function(){
      setTimeout(function () {
        console.log(i);
      });
})(i)}

3. try...catch...
for(let i = 0; i < 5; i++) {
try{
throw(i)
}catch(j){
   setTimeout(function () {
        console.log(j);
   });
 }}
4. promise

async function  f() {
for(var i=0;i<5;i++){
await new Promise((resolve => {
console.log(i);
resolve();
}))
}
}
f();