解构赋值配合默认值可安全简洁提取对象属性,避免undefined报错;支持基础解构、嵌套解构、重命名及函数参数场景,默认值仅在undefined时生效。

解构赋值配合默认值,能让你一行代码安全、简洁地从对象中提取所需属性,避免 undefined 报错,也省去手动判断和赋值的冗余逻辑。
基础解构 + 默认值:防 undefined 最简写法
当对象可能缺失某些属性时,直接在解构时指定默认值,比先检查再赋值更直观:
-
写法:
const { name = '匿名', age = 18 } = user || {}; -
说明:即使
user是null、undefined或不含name属性,也不会报错;|| {}防止对 null/undefined 解构,= '匿名'处理属性缺失 -
注意:默认值只在属性值为
undefined时生效,null、0、false、''仍会被原样取用
嵌套解构 + 深层默认值:处理多层结构
面对 user.profile.address.city 这类深层路径,可逐级设置默认空对象和默认值:
-
写法:
const { profile = {}, address = {} } = user; const { city = '未知城市' } = address; -
或一步到位(ES2020+ 可选链兼容):
const { profile: { address: { city = '未知城市' } = {} } = {} } = user; -
关键点:每一层都用
= {}提供兜底对象,再解构下一层,避免Cannot destructure property 'xxx' of undefined
重命名 + 默认值:兼顾语义与容错
当原始属性名不理想,或需统一接口字段时,可一边重命名一边设默认值:
-
写法:
const { first_name: firstName = '', last_name: lastName = '', email: contactEmail = 'no-email@example.com' } = userData; - 好处:变量名符合 JS 命名习惯,同时确保即使 API 返回字段为空或缺失,变量也有可用值
-
提示:重命名用冒号
:,默认值用等号=,顺序不能颠倒(first_name: firstName = '...'✅,first_name = '...': firstName❌)
函数参数解构:让 API 更健壮易读
把解构默认值直接用在函数形参里,是提升配置类函数可维护性的常用技巧:
-
写法:
function createUser({ name = '新用户', role = 'user', permissions = [] } = {}) { ... } -
效果:调用时可传任意子集:
createUser({ name: 'Alice' }),未传字段自动使用默认值;= {}确保传undefined也不崩 - 适用场景:组件 props、配置项、API 请求选项等需要灵活传参的地方
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











