ES6解构赋值支持对象按名、数组按位提取值,支持默认值、重命名、嵌套和跳过;函数参数可直接解构;需注意右侧非null/undefined、别名用冒号、剩余运算符须置尾。

ES6 解构赋值能让你用一行代码从对象或数组里精准拿到想要的值,省去点号访问、下标取值、手动赋值这些啰嗦步骤。核心就两点:按名取(对象)、按位取(数组),而且支持默认值、重命名、嵌套和跳过。
对象解构:按属性名直接提取
变量名默认需与属性名一致;缺失时可设默认值;名字冲突或想更语义化,就用别名。
- 基础写法:const { name, age } = { name: 'Lily', age: 28 }; → 直接得到两个变量
- 设默认值:const { city = 'Beijing', job } = { job: 'Designer' }; → city 取默认,job 为 'Designer'
- 重命名:const { name: fullName, age: years } = user; → 变量名不再受限于原始键名
- 嵌套对象:const { profile: { email, address: { zip } } } = data; → 一层层结构对应着写就行
数组解构:按索引位置提取元素
顺序决定一切,空位代表跳过,... 收集剩余项,还能给某一位设默认值。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 基本提取:const [a, b, c] = ['x', 'y', 'z']; → a='x', b='y', c='z'
- 跳过中间项:const [first, , third] = ['a', 'b', 'c']; → first='a', third='c'
- 收集剩余:const [head, ...tail] = [1, 2, 3, 4]; → head=1, tail=[2,3,4]
- 默认值处理:const [x = 0, y = 0] = [5]; → x=5, y=0(第二位不存在,取默认)
函数参数中直接解构
把解构逻辑前移到形参,让调用更干净,尤其适合配置类函数或 API 响应处理。
立即学习“Java免费学习笔记(深入)”;
- 对象参数:function init({ host = 'localhost', port = 3000, debug = false }) { ... }
- 调用时传对象即可:init({ host: 'api.example.com', debug: true });
- 数组参数(较少见但可行):function swap([a, b]) { return [b, a]; } → swap([1, 2]) 返回 [2, 1]
实用提醒:几个易踩的坑
解构看着简单,实际用错容易报错或取到 undefined。
- 右侧必须是可迭代对象(数组)或可枚举对象(普通对象),null 或 undefined 会直接报错,建议加空对象/空数组兜底:const { id } = data || {};
- 对象解构不关心属性顺序,数组解构严格依赖位置 —— 混用时别把两者逻辑搞反
- 别名语法 { oldName: newName } 是冒号分隔,不是等号;漏写冒号会变成声明新属性
- 剩余运算符 ... 必须放在最后,且只能出现一次

















