javascript解构赋值中默认值仅在undefined时生效:对象/数组解构中缺失或undefined触发默认值,null等falsy值不触发;嵌套解构需为中间对象设默认值;函数参数解构需整体设默认空对象防错。

在 JavaScript 解构赋值中,给未匹配到的变量设置默认值非常直接:只需在解构时用 = 后紧跟默认值即可。这个默认值仅在被解构的属性为 undefined 时生效(null、0、false、空字符串等“falsy”值不会触发默认值)。
对象解构中的默认值
当对象中缺少某个属性,或该属性值为 undefined,对应变量就会取默认值:
const obj = { name: 'Alice' };
const { name, age = 25, city = 'Beijing' } = obj;
console.log(name); // 'Alice'
console.log(age); // 25(obj 中无 age 属性)
console.log(city); // 'Beijing'
注意:如果 obj.age = undefined,也会启用默认值;但若 obj.age = null,则 age 就是 null,不会回退到默认值。
数组解构中的默认值
数组按索引位置匹配,越界或元素为 undefined 时启用默认值:
-
const [a, b = 10, c = 20] = [1];→a=1,b=10,c=20 -
const [x, y = 5] = [2, undefined];→x=2,y=5(因为undefined触发默认) -
const [p, q = 7] = [3, null];→p=3,q=null(null不触发默认)
嵌套解构 + 默认值组合使用
可逐层设置默认对象,避免访问深层属性时报错:
const user = { profile: { name: 'Bob' } };
const {
profile = {},
profile: { name, avatar = 'default.png' }
} = user;
console.log(name); // 'Bob'
console.log(avatar); // 'default.png'(profile.avatar 不存在)
关键点:先给 profile 设默认空对象,才能安全地继续解构其子属性。
函数参数中的解构默认值
常用于配置对象参数,让调用更灵活:
function connect({ host = 'localhost', port = 3000, secure = false } = {}) {
console.log(`Connecting to ${secure ? 'https' : 'http'}://${host}:${port}`);
}
connect(); // 使用全部默认值
connect({ host: 'api.example.com' }); // 只覆盖 host,其余仍用默认
注意末尾的 = {}:它为整个参数设默认空对象,防止传入 undefined 导致解构失败。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











