javascript - 为什么 for-of 循环中的这个对象解构不起作用?
问题描述
基本上以下代码不起作用,我不明白为什么。在嵌套循环中,我有一个名为“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)
}
}
推荐阅读
- android - 如何在没有活动的情况下获取 android 资产
- firebase - Firebase 发件人/服务器密钥更改会影响当前订阅的主题吗?
- coq - 定位战术符号
- r - 如何使用李克特量表项目分析测试前和测试后调查?
- javascript - 如何在for循环中解构嵌套对象
- javascript - knex.js - 迁移最新的“已经是最新的”
- swift - 当 UICollectionViewCell 不在视野范围内时尝试暂停视频
- python - 如果变量在python中设置为true,则装饰文件中的所有函数
- excel - 根据值从另一个工作表复制特定行
- html - `ul` 带有框阴影和 `li` 元素周围的边距