Javascript ES6常量在迭代中的用法
我正在阅读Nodejs API,我对缓冲区的迭代感到困惑: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
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 doconst 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@苏雷什阿塔