【发布时间】:2019-09-27 00:18:56
【问题描述】:
基本上以下代码不起作用,我不明白为什么。 在嵌套循环中,我有一个名为“children”的变量,它是一个包含对象的数组,其中包含名为 children 的字段(例如在 DOM 树中)。但是当我尝试解构数组的每个元素时,它们看起来像是名称冲突。由于我使用的是 let 他们应该有不同的范围(至少,解构变量应该隐藏“父”变量)。可能我错了,但我想了解原因。
let o = {
children: [
{children: [{}, {}, {}]},
{children: [{}, {}, {}]}
]
};
for (let {children} of o.children) {
console.log(children)
for (let {children} of children) {
console.log(children)
}
}
【问题讨论】:
-
您只有两个级别的
children,但您正试图解构三个(o.children、let {children}和let {children})。 -
let {children} of children这将不起作用并且会抛出 ReferenceError,因为在 声明它之前使用了{children},因为它与children具有相同的名称。此外,第二个 for 循环不能工作,解构也不能工作,因为在那个级别你已经在循环空对象了。 -
为什么你还有两个
for...of循环?let {children} of o.children已经处理了顶级children键和二级children
标签: javascript arrays loops object ecmascript-6