可直接在解构模式中逐层展开嵌套结构,用花括号嵌套花括号匹配路径;需保证左右结构对应,支持重命名、任意层级默认值(undefined 时生效)、中间层空对象默认值防错,以及嵌套中使用 rest 操作符收集剩余属性。

可以直接在解构模式中逐层展开嵌套结构,用花括号嵌套花括号的方式匹配路径,无需先提取中间层对象。
基础嵌套解构写法
当对象有多层嵌套时,解构左侧的结构需与右侧完全对应。例如:
- 单层嵌套:const { name, address: { city, zip } } = person;
- 两层以上嵌套:const { profile: { contact: { email } } } = user;
- 混合同名与重命名:const { title, meta: { author: writer, publishedAt: date } } = post;
嵌套中设置默认值
默认值可加在任意层级的变量后,只在对应属性为 undefined 时生效(null 不触发):
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
- const { name, address: { city = 'Unknown', zip = '00000' } } = person;
- 如果
person.address本身是undefined,则整个{ city, zip }解构会失败并报错;此时需先给中间层设默认值: - const { name, address: { city = 'Unknown', zip = '00000' } = {} } = person;
处理可能缺失的中间层
为避免因某一层为 undefined 导致解构报错,可在中间对象位置显式提供空对象默认值:
- const { data: { items: [firstItem = null] = [] } = {} } = response;
- 这表示:若
response.data不存在,用{}替代;若data.items不存在,用[]替代;再从中取第一个元素。
配合 rest 操作符提取剩余属性
在嵌套解构中也可使用 ...rest 收集未声明的属性:
- const { name, address: { city, ...addrRest } } = person;
- 此时
addrRest是一个包含address中除city外所有属性的新对象。










