如何让循环工作?

时间:2015-08-03 18:07:43

标签: javascript scope var let

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循环在两种情况下都是长时间结束。为什么要打印出阵列?

1 个答案:

答案 0 :(得分:2)

  

允许您声明范围有限的变量   使用它的块,语句或表达式。这与此不同   var关键字,它全局定义变量,或者本地定义变量   整个函数,无论块范围如何。

点击此处查看更多详细信息 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/let