关于javascript:迭代中的ES6 const用法

ES6 const usage in iteration

我在读nodejs api,我对buffer的迭代很困惑:

1
2
3
for (const b of buf10) {
  console.log(b)
}

const用于声明常量,为什么用const代替let


因为b是循环范围内的常量。记住,letconst在es6中有块范围。每次迭代都会创建一个新的变量,该变量在其范围内保持不变。


const is used to declare constants, so why use const instead of let?

因为您可以使用varletconst作为声明目的,但是它们的行为不同。

在这种情况下,

1
2
3
for (const b of buf10) {
  console.log(b)
}

有效,因为对于每个迭代,您都会得到一个新的常量b,并在当前迭代之后结束。

结论是,如果您事先知道您不会修改循环范围内的变量,那么您可以安全地进行修改。

如果您尝试在循环内修改b,您将看到一个错误。