var messages = ["Check!", "This!", "Out!"];
for (var i = 0; i < messages.length; i++) {
setTimeout(function () {
console.log(messages[i]);
}, i * 1500);
}
// -> prints 3* undefined
for (let i = 0; i < messages.length; i++) {
setTimeout(function () {
console.log(messages[i]);
}, i * 1500);
}
// -> prints out the array
我理解“var”是如何工作的,我已经习惯了 - 范围是有用的。然而,let声明远非明确。我理解是有块范围,但为什么在这个例子中有关系?在该示例中,for循环在两种情况下都是长时间结束。为什么要打印出阵列?
答案 0 :(得分:2)
允许您声明范围有限的变量 使用它的块,语句或表达式。这与此不同 var关键字,它全局定义变量,或者本地定义变量 整个函数,无论块范围如何。
点击此处查看更多详细信息 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/let