es6解构赋值可从对象或数组直接提取值,提升代码简洁性与可读性;支持重命名、默认值、嵌套解构及函数参数解构,但需注意语法限制与运行时错误风险。

ES6 解构赋值能直接从对象或数组里“拆出”需要的值,不用反复写 .属性名 或 [索引],代码更短、意图更清楚。
提取对象属性:按名字匹配,支持重命名和默认值
对象解构靠属性名匹配,不是位置。如果变量名和属性名一样,直接写;不一样就用冒号改名;属性可能不存在时,加等号设默认值。
- 基础提取:const { name, age } = user; —— 等价于 const name = user.name, age = user.age
- 变量重命名:const { name: userName, age: userAge } = user;
- 设置默认值:const { city = 'Beijing', role = 'guest' } = user; —— 即使 user 没有 city,也不会是 undefined
- 嵌套解构:const { profile: { email, avatar } } = user; —— 一层层往下取,中间结构必须存在
提取数组元素:按位置取值,可跳过、收尾或补默认
数组解构看的是索引顺序,左边变量的位置对应右边数组的第几个元素。逗号占位表示跳过,... 收集剩余项,等号给缺失项兜底。
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 基础取值:const [first, second] = colors; —— first 取 colors[0],second 取 colors[1]
- 跳过中间项:const [a, , c] = [1, 2, 3]; —— a 是 1,c 是 3,2 被忽略
- 收集剩余元素:const [head, ...rest] = [1, 2, 3, 4]; —— rest 得到 [2, 3, 4]
- 提供默认值:const [x = 0, y = 0, z = 0] = [5]; —— x=5,y 和 z 都取默认 0
在函数参数里直接解构,省掉函数体内再拆
函数形参支持解构语法,尤其适合处理配置对象或返回的数组,调用时更干净。
- 对象参数解构:function logUser({ name, age = 18 }) { console.log(name, age); }
- 数组参数解构:function swap([a, b]) { return [b, a]; } —— swap([1, 2]) 返回 [2, 1]
- 混合与默认结合:function init({ url, method = 'GET', headers = {} }) { ... }
注意几个实际容易出错的点
解构看着简单,但有些边界情况会影响运行结果,提前留意能少踩坑。
- 解构赋值语句不能单独一行开头是花括号:{ a, b } = obj 会报错,得写成 ({ a, b } = obj) 或 let { a, b } = obj
- 数组解构不关心长度是否匹配:左边变量多于数组元素,多余变量为 undefined(除非设了默认值)
- 嵌套解构失败会报错:比如 const { data: { list } } = response; 如果 response.data 是 null,直接 TypeError
- 解构只适用于可迭代对象:null、undefined、原始类型(如 string 除外)不能直接解构
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










