【问题标题】:JavaScript - What is the difference between declaring a iteration variable using a let versus a var keyword inside a for-loop? [duplicate]JavaScript - 在 for 循环中使用 let 和 var 关键字声明迭代变量有什么区别? [复制]
【发布时间】:2021-11-15 21:40:25
【问题描述】:

在 for 循环体中使用 let 和在 JavaScript for 循环体中使用 var 有什么区别?它们的工作方式是否不同?为什么?

例子:

使用 let

for (let i = 0; i < 10; i++) {

}

使用变量

for (var i = 0; i < 10; i++) {

}

这些在幕后的工作方式是相同的还是不同的,其中一个实际上功能更好吗?

这种差异是否也适用于 while 循环和 do-while 循环?

【问题讨论】:

标签: javascript for-loop var let


【解决方案1】:

let 是块作用域,var 不是。 使用let,您不能在forloop 主体之外使用i。 使用var(函数作用域或全局作用域)您可以。

for (var j = 0; j < 10; j++) {

}

console.log(j);


for (let i = 0; i < 10; i++) {

}

console.log(i);

您可以在 chrome 控制台中使用 var 运行 for 循环,并会看到 i 已附加到窗口对象。

【讨论】:

  • 循环 2 中的 i 的范围是哪个块,大括号之间的区域?或者特别是括号之间的区域......就像一个特殊的命令在场景下使用循环规范的三个部分做一些事情。显然 for 似乎类似于一个函数调用,但它看起来更像是一个 3 语句部分的指令来继续......
  • 在这种情况下,范围是什么,它是否只是你被限制在大括号之间的地方,或者甚至在全局意义上,在大括号之外?
  • 花括号内。那是一个块。虽然,我们也可以在括号内使用它。不知道 for 循环构造是如何工作的
  • 因此,当您根据您的描述将变量移动到窗口(全局范围)时,似乎是这样,因为它被声明为 var,但是是否发生了类似于变量提升的事情?如果是这种情况,我们为什么要使用 var?
猜你喜欢
  • 2019-06-25
  • 2013-11-18
  • 2021-08-02
  • 2023-02-17
  • 1970-01-01
  • 2018-05-14
  • 2010-10-20
相关资源
最近更新 更多