JavaScript解构赋值中默认值仅在属性值严格等于undefined时生效,null、0、false、''等falsy值不会触发;对象解构默认值写在属性名后或别名前,嵌套解构需为中间对象设默认空对象;数组解构可任意位置设默认值并支持rest参数。

在 JavaScript 解构赋值中,赋值运算符(=)本身不直接“赋予默认值”,而是通过在解构模式中使用 等号右侧的表达式 来指定默认值。这个等号是解构语法的一部分,不是常规的赋值操作符,它的作用是为解构失败(如属性不存在、值为 undefined)时提供回退值。
默认值只在值为 undefined 时生效
解构中的默认值仅在被解构的属性值严格等于 undefined 时触发。如果值是 null、0、false、''(空字符串)等“falsy”值,**默认值不会启用**。
-
✅ 正确触发默认值:
const { name = 'Anonymous' } = {};→name是'Anonymous' -
❌ 不会触发默认值:
const { name = 'Anonymous' } = { name: null };→name是null -
❌ 同样不会触发:
const { count = 10 } = { count: 0 };→count是0
对象解构中设置默认值的写法
在对象解构中,把默认值写在属性名后、冒号前(如果用了别名)或直接跟在属性名后(未用别名)。
- 基础形式:
const { user = 'guest', age = 18 } = data; - 带别名 + 默认值:
const { userName: name = 'unknown', userAge: age = 25 } = data; - 嵌套解构 + 默认值:
const { profile: { city = 'Unknown', zip: code = '00000' } = {} } = data;(注意内层也要给profile设默认空对象,否则解构profile.city会报错)
数组解构中设置默认值的写法
数组解构按位置匹配,可在任意位置用 = 指定默认值,尤其适合跳过中间项或处理长度不足的情况。
立即学习“Java免费学习笔记(深入)”;
-
const [first, second = 'beta', third = 'gamma'] = ['a'];→first='a',second='beta',third='gamma' -
const [,, third = 'default'] = ['x', 'y'];→ 跳过前两项,third='default' - 结合 rest 参数:
const [head, ...rest = []] = [];→head=undefined,rest=[](此时rest的默认值生效)
注意:默认值支持任意表达式
等号右边可以是函数调用、逻辑运算、甚至另一个解构——只要它是个合法表达式,且在解构时求值。
const { timeout = 5000 + Math.random() * 1000 } = config;const { api = getDefaultApi() } = settings;-
const { x = 0, y = 0 } = point || {};(先保底空对象,再解构)


















