Javascript ES6常量在迭代中的用法

Javascript ES6常量在迭代中的用法,javascript,ecmascript-6,Javascript,Ecmascript 6,我正在阅读Nodejs API,我对缓冲区的迭代感到困惑: for (const b of buf10) { console.log(b) } const用于声明常量,为什么要使用const而不是let?因为b是循环范围中的常量。请记住,让和const在ES6中具有块作用域。每次迭代都会创建一个新变量,该变量在其范围内保持不变 const用于声明常量,那么为什么要使用const而不是let呢 因为您可以使用varlet或const进行声明,但是它们的行为不同 在这种情况下, for (co

我正在阅读Nodejs API,我对缓冲区的迭代感到困惑:

for (const b of buf10) {
  console.log(b)
}
const
用于声明常量,为什么要使用
const
而不是
let

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

const用于声明常量,那么为什么要使用const而不是let呢

因为您可以使用
var
let
const
进行声明,但是它们的行为不同

在这种情况下,

for (const b of buf10) {
  console.log(b)
}
因为每次迭代都会得到一个新的常量b,并在当前迭代后结束

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


如果试图修改循环中的
b
,您将看到一个错误。

const仅仅意味着标识符不会被重新分配。cant do
const variable=“something”
while(true){variable=“something other”}
当我知道我不会重新分配变量时(例如当我创建一个对象实例时),我使用const。每隔一次,让我们使用可能的副本-耶!我使用闭包测试,
const
let
的工作方式不同于
var
let a=[];对于(buf10的常数b){a.push(function(){log(b);}}}
让b=[];对于(buf10的var c){b.push(function(){log(c)}}
@Borkes希望您看到b的不同值,即使在闭包中,其他闭包的值相同。结果是a和b的值不同,b的数组的值相同,而不是a@苏雷什阿塔