ES6对象解构支持别名与默认值独立或组合使用:别名用“属性名: 变量名”,默认值用“变量名 = 值”,组合为“属性名: 变量名 = 值”;默认值仅对undefined生效,null等falsy值不触发。

ES6 解构表达式支持在提取对象属性时同时设置别名和默认值,两者可独立使用,也能组合生效——关键在于语法顺序和结构是否匹配原始数据。
对象解构中设置别名
当变量名与属性名不一致,或想避免命名冲突时,用冒号 : 指定新变量名:
-
const { userId: id, userName: name } = { userId: 123, userName: 'Alice' };→id得到123,name得到'Alice' - 别名是纯重命名操作,不改变原始值,也不影响默认值逻辑
对象解构中设置默认值
当属性不存在或值为 undefined 时,才启用默认值(null 不触发默认值):
-
const { role = 'guest', level = 1 } = { role: 'admin' };→role是'admin',level是1 -
const { count = 0 } = { count: undefined };→ 触发默认值,count为0 -
const { flag = false } = { flag: null };→ 不触发,默认值不生效,flag仍为null
别名 + 默认值组合写法
语法格式为 { 原属性名: 新变量名 = 默认值 },注意冒号在前、等号在后:
-
const { status: state = 'pending', code: statusCode = 200 } = {};→state为'pending',statusCode为200 -
const { data: payload = [] } = { data: ['a', 'b'] };→payload是数组['a', 'b'] - 顺序不能颠倒:
{ status = 'idle': state }是语法错误
常见易错点提醒
- 默认值只对
undefined生效,对null、0、false、空字符串等“falsy”值无效 - 别名必须写在冒号右侧,左侧必须是真实存在的属性名(哪怕该属性在源对象中不存在)
- 嵌套解构中也可用别名+默认值,例如:
const { user: { name: userName = 'Anonymous' } = {} } = {};
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











