SOURCE

var a = 1;
function f1(){
    console.log(a);
    //如果不注释,内部变量会覆盖外层变量,输出为undefined
    // if(false){
    //     var a = 2;
    // }
}
f1();


let b=1;
function f2(){
     console.log(b);
     //因为let,块级作用域,不影响外面的b
     if(false){
         let b=2;
     }
}
f2();


for(var i=0;i<5;i++){
    console.log(i);
}
//输出为5,这时候i变成全局变量了
console.log(i);


//es5使用闭包实现块级作用域
for(var i=0;i<5;i++){
    //不使用闭包,全部都是5
    setTimeout(() => {
      console.log(i)
    }, 0)
    //使用闭包,输出正确
    ;(function (index){
        console.log(index);
    })(i);
}
console 命令行工具 X clear

                    
>
console