ES6 const usage in iteration
我在读nodejs api,我对buffer的迭代很困惑:
1 2 3
| for (const b of buf10) {
console.log(b)
} |
const用于声明常量,为什么用const代替let?
- const只是意味着不会重新分配标识符。
- 当我知道我不会重新分配变量(例如,当我创建一个对象的实例时)时,不能执行const variable ="something";while(true) {variable ="something else";},我使用const。每一个其他的场合都被使用
- 可能重复-stackoverflow.com/questions/21237105/…
因为b是循环范围内的常量。记住,let和const在es6中有块范围。每次迭代都会创建一个新的变量,该变量在其范围内保持不变。
const is used to declare constants, so why use const instead of let?
因为您可以使用varlet或const作为声明目的,但是它们的行为不同。
在这种情况下,
1 2 3
| for (const b of buf10) {
console.log(b)
} |
有效,因为对于每个迭代,您都会得到一个新的常量b,并在当前迭代之后结束。
结论是,如果您事先知道您不会修改循环范围内的变量,那么您可以安全地进行修改。
如果您尝试在循环内修改b,您将看到一个错误。
- 是啊!我使用闭合测试,const和let的工作不同于var:let a = []; for (const b of buf10) { a.push(function(){ log(b); }) }let b = []; for (var c of buf10) { b.push(function(){ log(c) }) }。
- @Borkes希望你能看到B的不同值,即使是在闭包中,其他的值也是一样的。
- A和B的结果不同,B的数组具有相同的值而不是A。@suresh atta