SOURCE


//在块级作用域中使用var声明的变量,变量提升,默认为全局变量
for(var i=1;i<=3;i++ ){
    console.log(i)
}
console.log(i)

for(let i=1;i<=3;i++ ){
    setTimeout(function(){
        console.log(i)
    },1000)
}
//最终输出为4,是因为setTimeout为异步宏任务,需要等到同步任务执行完成之后
//之后执行,var声明为全局变量
for(var i=1;i<=3;i++ ){
    setTimeout(function(){
        console.log(i)
    },1000)
}
//通过IIFE模拟块级作用域
//原理在于,通过传入外部参数保持对块级作用域中变量的引用
for(var j=1;j<=3;j++){
    (function(a){
        setTimeout(function(){
                console.log(a+'---')
            },2000)
    })(j)
}
console 命令行工具 X clear

                    
>
console