Javascript 为什么这个JS for循环会在前面写的之前记录,为什么会记录这些值? for(变量i=0;i

Javascript 为什么这个JS for循环会在前面写的之前记录,为什么会记录这些值? for(变量i=0;i,javascript,Javascript,出于某种原因,此代码的输出是 2. 2. 0 1. 我想这和var有关,让我来解释变量声明, 但我不知道它为什么会这样 有人能帮我吗?多谢各位 for(var i = 0; i < 2; i++) { setTimeout(function() { console.log(i); }, 0); } for(let i = 0; i < 2; i++) { setTimeout(function() { console.log(

出于某种原因,此代码的输出是 2. 2. 0 1. 我想这和var有关,让我来解释变量声明, 但我不知道它为什么会这样

有人能帮我吗?多谢各位

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

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