es6用var,let或const迭代对象?

sta*_*lei 1 javascript loops for-loop ecmascript-6

传统上,我们使用

for (var key in yourobject) {
  console.log(key, yourobject[key]);
}
Run Code Online (Sandbox Code Playgroud)

但是对于es6,我应该改为使用const key还是let key改为?

Tha*_*you 5

这与您是否在循环中使用它们无关.无论您的程序需要什么,请使用正确的绑定

  • const 绑定无法重新分配
  • let 绑定可以重新分配

如果您不需要重新分配变量的能力,请使用const- 它更严格,有助于保护您免受意外重新分配

如果您确实需要重新分配的能力,除了使用let(或var)之外别无选择


我喜欢@jfriend的决策树,但我可能会像这样写^ _ ^

  1. 使用 const
  2. 如果遇到重新分配问题,请使用 let
  3. 如果你遇到范围外的问题,请仔细检查你是不是犯了错误; 如果没有,请使用var

所以,因为我在for循环中使用它,在每个循环中重新分配密钥,我应该使用let?

编号constlet绑定仅在定义的上下文/范围内可用.在foror while循环的情况下,绑定仅在循环体中可用 - 不进行重新分配

for (const x of [1,2,3])
  console.log(x)
//1
//2
//3
  
for (const {a} of [{a:1}, {a:2}, {a:3}])
  console.log(a)  
//1
//2
//3

// const x and const a are not available outside of the loop
console.log(x) // ERROR: Uncaught ReferenceError: x is not defined
console.log(a) // ERROR: Uncaught ReferenceError: a is not defined
Run Code Online (Sandbox Code Playgroud)