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.解释?
答案 0 :(得分:3)
let是一个范围变量。这意味着let j在超时函数中放置了一个唯一的varibale。 var是全局变量。这意味着var j在超时函数中放置了一个全局变量,该变量被每个for循环替换。
以下是解释:What's the difference between using "let" and "var" to declare a variable?