【发布时间】: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
我遇到了这种晦涩的语法:
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
它只是将每个迭代值放入现有对象的该属性值中。
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);
或者您可以使用const 或let 为每次迭代创建一个绑定,例如const item of c,您可能已经知道了。
【讨论】:
您可以通过记录a 变量轻松查看。
通过分配a.b,您可以在a 的b 属性中保存迭代值。
请看下面的sn-p:
const a = {}
console.log(a);
const c = [1,2,3]
for (a.b of c) {
console.log(a);
}
希望这会有所帮助。
【讨论】: