javascript - es6 使用 var、let 或 const 迭代对象?

标签 javascript loops for-loop ecmascript-6

传统上,我们使用

for (var key in yourobject) {
  console.log(key, yourobject[key]);
}

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

最佳答案

这与您是否在循环中使用它们无关。根据您的程序需要使用正确的绑定(bind)

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

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

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


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

  1. 使用常量
  2. 如果遇到重新分配问题,请使用 let
  3. 如果您遇到范围外的问题,请仔细检查您没有犯错;如果没有,使用 var

so since i'm using it in a for loop which reassigns the key in each cycle, i should use let?

没有。 constlet 绑定(bind)仅在它们定义的上下文/范围内可用。在 forwhile 循环的情况下,绑定(bind)将仅在循环体中可用——不会发生重新分配

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

关于javascript - es6 使用 var、let 或 const 迭代对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44275117/

相关文章:

javascript - React ES6 父子组件状态问题

java - Iterator 的 remove 方法实际上是如何删除一个对象的

excel - Excel VBA中的嵌套循环错误

javascript - 使用 javascript/jQuery 识别包含特定类的单元格

php - 如何在浏览器中模拟命令行界面滚动? (始终在屏幕上保持最新的输出)

javascript - 我做了一个 8 球代码,但它只给了我 1 个答案

javascript - 为什么我无法在对象数组的 for-in 循环中访问对象属性?

java - 如何用更少的代码行来初始化和使用许多类似的Jbutton?

Python - 有一个具有相同变量的子循环

变量的javascript递增名称