解构赋值是JavaScript中按位置(数组)或属性名(对象)提取值并赋给变量的语法,支持跳过、剩余元素、默认值、重命名、嵌套及函数参数解构,但需注意括号包裹、null/undefined报错及保留字限制。

解构赋值是 JavaScript 中一种简洁提取数组或对象中值的语法,它让你不用通过下标或属性名反复访问,就能直接把数据“拆出来”赋给变量。
数组解构:按位置取值
左边用方括号 [],右边是数组,变量顺序对应元素位置。
例如:
-
const [a, b] = [1, 2];→a是1,b是2 - 跳过某项可用逗号占位:
const [x, , z] = [1, 2, 3];→x = 1,z = 3 - 剩余元素用扩展运算符:
const [first, ...rest] = [1, 2, 3, 4];→first = 1,rest = [2, 3, 4] - 默认值写在等号后:
const [a = 10, b = 20] = [5];→a = 5,b = 20
对象解构:按属性名取值
左边用花括号 {},变量名需与属性名一致(或使用别名),右边是对象。
立即学习“Java免费学习笔记(深入)”;
例如:
-
const { name, age } = { name: 'Alice', age: 30 };→ 直接拿到name和age - 重命名用
原属性名: 新变量名:const { title: bookName } = { title: 'JS Guide' }; - 嵌套对象也能解构:
const { user: { id, profile: { city } } } = { user: { id: 123, profile: { city: 'Beijing' } } }; - 同样支持默认值:
const { role = 'guest' } = {};→role是'guest'
函数参数中的解构
函数形参可以直接写解构模式,让调用更清晰。
- 数组参数:
function print([first, second]) { console.log(first, second); }
调用print(['a', 'b'])输出a b - 对象参数:
function connect({ host = 'localhost', port = 3000 }) { ... }
调用connect({ host: 'api.example.com' })→host被赋值,port取默认
注意点和常见陷阱
解构不是万能的,有些情况会报错或行为不符合直觉:
- 单独一行解构必须加括号,否则会被当成代码块:
({ a } = { a: 1 });会报错,要写成({ a } = { a: 1 });或先声明再赋值 - 解构 null 或 undefined 会报错:
const { x } = null;→ TypeError;可配合空值合并或逻辑判断提前处理 - 对象解构时变量名不能是保留字(如
class、function),但可以用字符串形式别名绕过:const { 'class': cls } = { class: 'active' };










