Skip to content
本页目录

解构赋值

ES6 引入了解构赋值(Destructuring Assignment),是一种从数组或对象中提取值并赋给变量的语法,使得在处理数据时更加方便和简洁。

当使用解构赋值时,我们可以从数组或对象中提取数据,并将其赋值给对应的变量。下面我将详细介绍数组解构和对象解构的用法,以及一些扩展功能。

TIP

解构赋值是一种简洁而强大的语法,它在处理数据时非常实用,使得代码更加清晰易读。无论是数组解构还是对象解构,都可以显著提高代码的可读性和可维护性。

数组解构赋值

数组解构赋值允许我们根据数组的顺序,将数组的元素提取出来并赋值给变量。

基本用法

javascript
const numbers = [1, 2, 3, 4, 5]

const [a, b, c, d, e] = numbers

console.log(a) // 1
console.log(b) // 2
console.log(c) // 3
console.log(d) // 4
console.log(e) // 5

忽略不需要的元素

我们可以使用逗号将不需要的元素跳过。

javascript
const numbers = [1, 2, 3, 4, 5]

const [a, , c, , e] = numbers

console.log(a) // 1
console.log(c) // 3
console.log(e) // 5

给变量指定默认值

如果数组元素不足以匹配变量的个数,可以为变量指定默认值,避免出现undefined

javascript
const numbers = [1, 2]

const [a, b, c = 3] = numbers

console.log(a) // 1
console.log(b) // 2
console.log(c) // 3 (使用默认值)

剩余元素

使用...语法可以将剩余的数组元素赋值给一个新数组。

javascript
const numbers = [1, 2, 3, 4, 5]

const [a, b, ...rest] = numbers

console.log(a) // 1
console.log(b) // 2
console.log(rest) // [3, 4, 5]

交换变量的值

使用解构赋值,可以非常简洁地交换两个变量的值,无需使用第三个变量。

js
let x = 10
let y = 20

;[x, y] = [y, x]  // 前面必须要加分号

console.log(x) // 20
console.log(y) // 10

对象解构赋值

对象解构赋值允许我们根据对象的属性名,将对象的属性值提取出来并赋值给变量。

基本用法

javascript
const person = {
  name: 'John',
  age: 30,
  country: 'USA'
}

const { name, age, country } = person

console.log(name) // 'John'
console.log(age) // 30
console.log(country) // 'USA'

重命名变量

我们可以通过在解构时为变量指定新的名称,来实现重命名。

javascript
const person = {
  fullName: 'John Doe',
  yearsOld: 30
}

const { fullName: name, yearsOld: age } = person

console.log(name) // 'John Doe'
console.log(age) // 30

给变量指定默认值

和数组解构一样,可以为对象解构赋值时,为变量指定默认值。

javascript
const person = {
  name: 'Alice',
  age: 25
}

const { name, age, country = 'Unknown' } = person

console.log(name) // 'Alice'
console.log(age) // 25
console.log(country) // 'Unknown' (使用默认值)

嵌套解构

对象解构也支持嵌套解构,从嵌套对象中提取值。

javascript
const person = {
  name: 'Bob',
  age: 28,
  address: {
    city: 'New York',
    country: 'USA'
  }
}

const {
  name,
  age,
  address: { city, country }
} = person

console.log(name) // 'Bob'
console.log(age) // 28
console.log(city) // 'New York'
console.log(country) // 'USA'

lemon's personal blog.