【问题标题】:What does property access in a for-of loop do, like `for (a.b of c)`? [duplicate]for-of 循​​环中的属性访问有什么作用,例如“for (a.b of c)”? [复制]
【发布时间】:2019-09-11 07:46:02
【问题描述】:

我遇到了这种晦涩的语法:

const a = {}
const c = [1,2,3]

for (a.b of c) {}

assert(a.b === 3)

它是如何工作的?

【问题讨论】:

  • 你只是重用了一个变量。就像你做了let current; for (current of someArray)

标签: javascript for-loop


【解决方案1】:

它只是将每个迭代值放入现有对象的该属性值中。

const a = {}
const c = [1,2,3]

for (a.b of c) {
  console.log(a.b);
}
console.log(a.b);
console.log(a);

它可以是任何现有的参考:

const a = {
  foo: [
    {
      nested: 'nestedVal'
    }
  ]
}
const c = [1,2,3]

for (a.foo[0].nested of c) {
  console.log(a.foo[0].nested);
}
console.log(a.foo[0].nested);
console.log(a);

包括一个独立变量:

let a;
const c = [1,2,3]

for (a of c) {
  console.log(a);
}
console.log('a is:', a);

或者您可以使用constlet 为每次迭代创建一个绑定,例如const item of c,您可能已经知道了。

【讨论】:

  • 这是否记录在某处?第一次看到这种语法。
【解决方案2】:

您可以通过记录a 变量轻松查看。

通过分配a.b,您可以在ab 属性中保存迭代值。

请看下面的sn-p:

const a = {}
console.log(a);

const c = [1,2,3]

for (a.b of c) {
  console.log(a);
}

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2020-07-10
    • 1970-01-01
    • 2018-11-14
    • 2021-08-14
    • 1970-01-01
    • 2020-09-19
    • 2014-12-18
    • 2018-01-20
    相关资源
    最近更新 更多