JavaScript解构赋值是ES6引入的按模式从数组或对象提取值并赋给变量的语法,核心为简洁与清晰:数组按位置、对象按属性名匹配,支持默认值、重命名、嵌套及剩余运算符。JavaScript中的解构赋值是一种从数组或对象中**按模式提取值并直接赋给变量**的语法特性,ES6正式引入。它不是简单的复制,而是“匹配式赋值”:等号左边写结构(像模板),右边提供数据,JS自动把对应位置或属性名的值填进去。 比如不用再写 `const name = user.name; const age = user.age;`,一行 `const { name, age } = user;` 就搞定。
核心就两点:简洁 + 清晰。变量从哪来一目了然,代码量少了一半,嵌套取值也不容易出错。
左边用方括号列变量,顺序对应数组索引:
const [a, b, c] = [1, 2, 3]; → a=1, b=2, c=3const [, , third] = ['x', 'y', 'z']; → third='z'const [first, ...rest] = [10, 20, 30, 40]; → rest=[20, 30, 40]const [x = 10, y = 20] = [5]; → x=5, y=20(只有undefined才触发默认值)左边用花括号,变量名默认和属性名一致:
const { name, id } = { name: 'Tom', id: 123 }; → name='Tom', id=123const { name: fullName, id: uid } = obj;
const { user: { profile: { city } } } = data;
const { role
= 'guest' } = {}; → role='guest'[a, b] = [b, a]; 不需要临时变量const { data, error } = await fetchUser();