? 阮一峰 ES6 教程的独特魅力
? 解构赋值:ES6 中的强大工具
? 数组解构:按位置精准取值
const array = [1, 2, 3];,你想把第一个元素赋给变量 a,第二个元素赋给变量 b,第三个元素赋给变量 c,用解构赋值就可以这样写:const [a, b, c] = array;,是不是很简单?const [, second] = array;,这样就可以直接拿到第二个元素 2。...。像 const [h, ...rest] = array;,h 会拿到第一个元素 1,rest 则会拿到剩下的 [2, 3]。? 对象解构:灵活提取对象属性
const person = { name: 'Alice', age: 25 };,你想提取 name 和 age 属性,用解构赋值就是 const { name, age } = person;。const { name: personName, age: personAge } = person;,这样 personName 就是 'Alice',personAge 就是 25。const { job = 'none' } = person;,因为 person 对象中没有 job 属性,所以 job 就会被赋值为 'none'。? 嵌套解构:深入复杂数据结构
const person = { name: 'Alice', age: 25, job: { title: 'developer' } };,你想提取 name 和 job 中的 title 属性,就可以这样写:const { name, job: { title } } = person;,name 是 'Alice',title 是 'developer'。const { name: pName, ...rest } = person;,pName 是 'Alice',rest 则是 { age: 25, job: { title: 'developer' } }。? 函数参数解构:让函数调用更简洁
function f([a, b]) { console.log(a, b); },你调用 f([1, 2]);,就会输出 1 2。function g({ name }) { console.log(name); },调用 g({ name: 'Alice', age: 25 });,就会输出 'Alice'。? 阮一峰教程中的实战技巧
const [top1, top2, ...others] = brands; 是正确的,要是写成 const [...others, top1, top2] = brands; 就会报错。let x = 5; let y = 10;;[y, x] = [x, y];,这里的分号就很重要。? 2025 年解构赋值的最佳实践
function createElement({ width = 100, height = 100 }) { console.log(创建{height} 的元素); },调用 createElement({}) 就会创建一个 100x100 的元素。const obj = { [Math.random()]: 'abc' };,这样就可以动态地为对象添加属性。❓ 常见问题解答
A:如果解构源中没有匹配的属性或元素,变量就会被赋值为
undefined。比如 const { missingProp } = {};,missingProp 就是 undefined。A:当然可以。字符串会被转换成一个类似数组的对象,你可以按位置提取字符。比如
const [a, b] = 'Hi';,a 是 'H',b 是 'i'。null 或 undefined 会怎样?A:会报错。因为它们不是可迭代对象,也不是对象。比如
const { prop } = null; 就会抛出 TypeError。