javascript对象解构中默认值仅在属性为undefined时生效,null、0、false、''等falsy值不触发;支持嵌套解构、重命名+默认值(如firstname: name = '未知')及表达式惰性求值。

在 JavaScript 对象解构时,可以直接在解构语法中为属性设置默认值,当原对象中该属性不存在或值为 undefined 时,就会启用默认值。
基本语法:在属性后用 = 赋默认值
解构时,在属性名后加等号和默认值即可。注意:null、0、false、'' 等“falsy 值”不会触发默认值,只有 undefined 才会。
-
✅ 正确(属性缺失 → 使用默认值):
const { name = '匿名', age = 18 } = {};
→name是'匿名',age是18 -
✅ 正确(属性为
undefined→ 同样触发):const { name = '匿名' } = { name: undefined };
→name仍为'匿名' -
❌ 注意(
null不触发默认值):const { name = '匿名' } = { name: null };
→name是null,不是'匿名'
嵌套解构时设默认值
对深层属性设默认值,需配合嵌套解构结构,并在对应层级写默认值。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
- 例如:
const { user: { name = '游客', role = 'user' } = {} } = data;
这里user本身可能不存在,所以给user一个空对象默认值(= {}),再对其内部属性设默认值。 - 若不给
user设默认值:const { user: { name } } = data;
一旦data.user是undefined或null,就会报错Cannot destructure property 'name' of 'undefined'。
用变量名接收并设默认值(重命名 + 默认值)
结合属性重命名(oldName: newName)与默认值,写法是:oldName: newName = defaultValue。
-
const { firstName: name = '未知', age: years = 0 } = { firstName: undefined, age: 25 };
→name是'未知',years是25(因为age存在且非undefined) - 顺序不能颠倒:
firstName = '未知': name是语法错误,必须是firstName: name = '未知'。
默认值支持表达式和函数调用
等号右侧可以是任意表达式,包括函数调用、三元运算、甚至其他解构 —— 它们只在需要时执行(惰性求值)。
-
const { timeout = getDefaultTimeout() } = config;
如果config.timeout是undefined,才调用getDefaultTimeout() -
const { retry = (Math.random() > 0.5 ? 3 : 5) } = opts;
仅当需要默认值时才生成随机数
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










