请解释两个程序之间的输出差异

时间:2017-01-06 12:24:54

标签: javascript var let

for (let j=0; j<3; j = j+1) {
    setTimeout(function() {
      console.log(j);
    }, 1000);
}

输出 0 1 2

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

输出 3 3 3

我理解为什么总是使用var print 3。但即使让我们也应该打印所有3.解释?

1 个答案:

答案 0 :(得分:3)

let是一个范围变量。这意味着let j在超时函数中放置了一个唯一的varibale。 var是全局变量。这意味着var j在超时函数中放置了一个全局变量,该变量被每个for循环替换。

以下是解释:What's the difference between using "let" and "var" to declare a variable?

相关问题