JavaScript对象解构支持基础提取、重命名、默认值及嵌套解构:{name, age}直接取同名属性;{name: userName}重命名;{level = 'user'}设默认值(仅undefined生效);{profile: {contact: {email}}}处理嵌套结构。

JavaScript 中对象解构是一种简洁、直观的语法,能直接从对象中提取所需属性并赋值给变量,无需逐个点取或临时存储。
基础用法:按属性名提取同名变量
最常见场景是提取与属性名相同的变量:
const user = { name: 'Alice', age: 28, city: 'Beijing', role: 'admin' };
const { name, age } = user;
console.log(name); // 'Alice'
console.log(age); // 28
- 左边花括号内写要提取的属性名,顺序无关
- 变量名必须与对象属性名一致,否则会得到
undefined - 未声明的属性不会报错,只是对应变量值为
undefined
重命名字段:用 原属性名: 新变量名
当变量名与属性名冲突,或想使用更语义化的名称时,可重命名:
const { name: userName, city: location } = user;
console.log(userName); // 'Alice'
console.log(location); // 'Beijing'
- 冒号左边是对象中的属性名,右边是你要声明的变量名
- 支持同时重命名多个字段,如
{ id: userId, email: userEmail }
设置默认值:避免 undefined
若属性不存在或值为 undefined,可用 = 提供默认值:
立即学习“Java免费学习笔记(深入)”;
const { role, level = 'user', avatar = '/default.png' } = user;
console.log(role); // 'admin'
console.log(level); // 'user'(因为 user 没有 level 属性)
console.log(avatar); // '/default.png'
- 默认值只在属性值严格等于
undefined时生效(null、0、false等“falsy”值仍会被保留) - 可与重命名组合:
{ role: userRole = 'guest' }
嵌套解构:一层或多层对象结构也能拆
对嵌套对象,可在解构中用嵌套花括号直接提取深层字段:
const data = {
profile: {
contact: { email: 'a@example.com', phone: '123-456' },
settings: { theme: 'dark', notifications: true }
}
};
const {
profile: {
contact: { email },
settings: { theme }
}
} = data;
console.log(email); // 'a@example.com'
console.log(theme); // 'dark'
- 每层用一对花括号表示层级,中间用冒号连接
- 支持为嵌套字段重命名和设默认值,例如:
profile: { contact: { email: userEmail = 'no-email' } } - 如果某层路径不存在(如
profile是undefined),会报错;可配合可选链或提前校验规避


















