for...of 只能遍历对象数组等可迭代对象,不可直接遍历普通对象;配合解构可简洁提取属性,支持重命名、默认值、嵌套解构及保留原对象。

JavaScript 中 for...of 本身不能直接遍历普通对象(因为对象默认不可迭代),但可以轻松遍历对象数组,再配合解构赋值提取每个对象的属性,写法简洁清晰。
前提:确保是对象数组
只有数组(或类数组、可迭代对象)才能用 for...of。如果你有一组用户数据,它应该长这样:
{ id: 1, name: '张三', age: 25 },
{ id: 2, name: '李四', age: 30 },
{ id: 3, name: '王五', age: 28 }
];
基础用法:解构单个对象属性
在 for...of 循环中,每次迭代得到一个对象,直接用解构语法取值:
console.log(id, name); // 1 '张三',2 '李四',3 '王五'
}
进阶技巧:灵活解构
-
重命名属性:用
oldName: newName避免变量名冲突
for (const { name: fullName, age: userAge } of users) { ... } -
设置默认值:应对某些对象缺少字段的情况
for (const { name, age = 18 } of users) { ... } -
嵌套解构:适用于含子对象的数据
const data = [{ profile: { nick: '阿七' } }, { profile: { nick: '小满' } }];
for (const { profile: { nick } } of data) { console.log(nick); } -
保留原对象 + 解构:需要同时访问整个对象和部分属性
for (const user of users) { const { id, name } = user; console.log(id, name, user); }
注意:别混淆 for...in 和 for...of
for...in 遍历对象的键名(包括继承属性),不推荐用于数组;for...of 遍历可迭代对象的值,天然适合数组 + 解构。对象本身想用 for...of 必须先转成可迭代形式(如 Object.entries()),但这不属于“对象数组”的场景。











