对象解构可同时重命名与设默认值,格式为{原属性名:新变量名=默认值},默认值仅在原属性为undefined时生效;嵌套解构中每层均可独立设置;需防null/undefined报错并避免混淆TS语法。

对象解构赋值时,重命名和默认值可以同时使用,语法清晰、组合灵活。关键在于理解冒号 : 的作用是“左边写原始属性名,右边写目标变量名”,而等号 = 是为该变量提供默认值——两者可共存于同一字段中。
重命名 + 默认值的基本写法
格式为:{ 原属性名: 新变量名 = 默认值 }。只有当原属性值为 undefined 时,默认值才生效;null、0、false、空字符串等“falsy”值不会触发默认值。
-
const { name: fullName = 'Anonymous', age: years = 18 } = { name: 'Leo' };
→fullName是'Leo',years是18(因为age属性不存在,值为undefined) -
const { role: userRole = 'guest' } = { role: null };
→userRole是null,不是'guest'(null !== undefined) -
const { tags: labels = [] } = {};
→labels是空数组[]
嵌套对象中混合使用重命名与默认值
在深层结构里,每层解构都支持独立设置重命名和默认值,注意括号层级和冒号位置。
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
-
const { profile: { firstName: givenName = 'NoName', lastName: familyName = 'Unknown' } } = { profile: {} };
→givenName和familyName都取默认值 -
const { data: { id: itemId = 0, status: itemStatus = 'pending' } } = { data: { id: 123 } };
→itemId是123,itemStatus是'pending'
常见易错点提醒
这些细节不写出来容易踩坑:
立即学习“Java免费学习笔记(深入)”;
- 重命名必须用冒号,不能写成
{ name as fullName }(那是 TypeScript 的语法,JS 不支持) - 默认值只对
undefined生效,检查是否真缺失要用in或hasOwnProperty,不能只靠解构默认值来判断字段是否存在 - 如果解构目标是
null或undefined,会直接报错TypeError: Cannot destructure property ... of 'null',需提前校验或用空对象兜底:const { x = 0 } = obj || {}; - 重命名后原属性名不可再访问,比如
{ name: fullName }解构后,name变量不存在,只有fullName
实用组合技巧
把重命名、默认值和剩余属性一起用,适合处理不规范的 API 返回数据:
const { title: headline, content: body, author: byline = 'Editorial Team', ...rest } = apiData;- 再配合逻辑或短路赋值:
const { user: { name: userName } = {} } = response || {};(先保底空对象,再安全解构)

















