解构赋值是一种方便的 JavaScript 语法,它允许从数组和对象中快速提取和赋值变量。通过解构赋值,你可以在一个语句中将值从数组或对象中解构出来并赋给多个变量。
数组解构赋值:
数组解构赋值允许你从数组中提取值,并将它们赋给命名变量。
const myArray = [1, 2, 3];
const [a, b, c] = myArray;
console.log(a); // 输出: 1
console.log(b); // 输出: 2
console.log(c); // 输出: 3
对象解构赋值:
对象解构赋值允许你从对象中提取值,并将它们赋给命名变量。
const myObject = { x: 1, y: 2, z: 3 };
const { x, y, z } = myObject;
console.log(x); // 输出: 1
console.log(y); // 输出: 2
console.log(z); // 输出: 3
在对象解构赋值中,如果目标变量的名称和源对象的属性名相同,你可以使用缩写来简化赋值过程。以下是对象解构赋值的常见示例:
// 同名情况下的对象解构赋值
const person = { name: 'Alice', age: 30 };
const { name, age } = person;
console.log(name); // 输出: "Alice"
console.log(age); // 输出: 30
在上面的示例中,name
和age
都是目标变量的名称,它们与person
对象 中的属性名相同,所以直接使用了这种缩写形式。
如果目标变量的名称和源对象的属性名不同,你可以使用冒号来指定新的变量名,如下所示:
// 不同名情况下的对象解构赋值
const person = { name: 'Bob', job: 'Engineer' };
const { name: personName, job: personJob } = person;
console.log(personName); // 输出: "Bob"
console.log(personJob); // 输出: "Engineer"
在上面的示例中,我们使用了冒号来指定新的变量名,这样可以将源对象的属性值赋给与目标变量名称不同的变量。
因此,在对象解构赋值中,当目标变量的名称与源对象的属性名相同时,可以直接使用缩写形式;当它们不同时,可以通过冒号指定新的变量名来进行赋值。
默认值:
解构赋值还可以使用默认值,以防提取的值为 undefined。
const myArray = [1, 2];
const [a, b, c = 3] = myArray;
console.log(a); // 输出: 1
console.log(b); // 输出: 2
console.log(c); // 输出: 3 (默认值)
剩余运算符:
使用剩余运算符可以将剩余的数组项或对象属性保存到一个新的变量中。
const myArray = [1, 2, 3, 4, 5];
const [a, b, ...rest] = myArray;
console.log(a); // 输出: 1
console.log(b); // 输出: 2
console.log(rest); // 输出: [3, 4, 5]
结构赋值是一种强大且简洁的方式,可用于从复杂的数据结构中提取所需的值并将其赋给变量。使用它可以使代码更加清晰和易于阅读。