循环输出——闭包、变量作用域

207 阅读1分钟

一:使用let

for(let i=0;i<5;i++){
    setTimeout(function(){
        console.log(i);
    },1000);
}

二:使用闭包

for(var i=0;i<5;i++){
    (function(j){
        setTimeout(function(){
            console.log(j);
        },1000);
    })(i);
}

三:参数传递是按值传递

var out = function(j){
    setTimeout(function(){
        console.log(j);
    },1000);
};
for(var i=0;i<5;i++){
    out(i);
}