作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
基本上下面的代码不起作用,我不明白为什么。在嵌套循环中,我有一个名为“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)
}
}
最佳答案
通过接受这个声明,
for (let {children} of children)
您尝试创建一个新的局部变量并使用与源相同的命名变量来获取新变量的元素。
这行不通,因为两个变量之间没有区别。
如果您重命名目标或源变量,它会起作用。
let o = {
children: [
{ children: [{ children: [{}, {}, {}] }, { children: [{}, {}, {}] }] },
{ children: [{ children: [{}, {}, {}] }, { children: [{}, {}, {}] }] },
]
};
for (let { children } of o.children) {
console.log(children)
for (let { children: c } of children) { // rename here
console.log(c)
}
}
关于javascript - 为什么这个 for-of 循环中的对象解构不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56054731/
我是一名优秀的程序员,十分优秀!