setTimeout中的闭包函数是每1s执行一次 由于for循环的执行速度远小于1s,

71 阅读1分钟

setTimeout中的闭包函数是每1s执行一次

由于for循环的执行速度远小于1s,

所以当开始执行闭包函数的时候for循环已经结束了(i=10),

之后闭包函数执行十次(因为循环了10次),所以打印了10个10。 以下运行结果:

for(var i = 0; i < 10; i++) {

    setTimeout(function() {

        console.log(i);

    }, 1000);

}