NodeJS教程

解构赋值

Preview
  • ES6解构赋值
  • 数组解构赋值
  • 对象解构赋值
  • 嵌套解构赋值
  • 使用解构赋值交换变量的值
  • 使用解构赋值作为函数参数
  • 结语

ES6解构赋值

在ES6中,解构赋值是一种方便的语法,可以将数组或对象中的值提取出来并赋值给变量。它可以让我们更方便地进行变量赋值、参数传递等操作。

数组解构赋值

数组解构赋值可以将数组中的元素赋值给变量,语法如下:

let [a, b, c] = [1, 2, 3];
console.log(a); // 1
console.log(b); // 2
console.log(c); // 3

上面的代码中,将数组 [1, 2, 3] 中的值分别赋值给了变量 abc。 如果我们只想获取数组中的某个元素,可以使用下划线 _ 来占位:

let [a, , c] = [1, 2, 3];
console.log(a); // 1
console.log(c); // 3

上面的代码中,使用 , 来跳过数组中的第二个元素。 如果数组的长度小于解构赋值的变量个数,那么未赋值的变量将会是 undefined

let [a, b, c] = [1, 2];
console.log(a); // 1
console.log(b); // 2
console.log(c); // undefined

如果想要为未赋值的变量设置默认值,可以使用 = 来设置默认值:

let [a, b, c = 3] = [1, 2];
console.log(a); // 1
console.log(b); // 2
console.log(c); // 3

对象解构赋值

对象解构赋值可以将对象中的属性赋值给变量,语法如下:

let {a, b, c} = {a: 1, b: 2, c: 3};
console.log(a); // 1
console.log(b); // 2
console.log(c); // 3

上面的代码中,将对象 {a: 1, b: 2, c: 3} 中的属性值分别赋值给了变量 abc。 如果我们只想获取对象中的某个属性,可以使用和数组解构赋值相同的语法:

let {a, c} = {a: 1, b: 2, c: 3};
console.log(a); // 1
console.log(c); // 3

如果对象中没有要解构的属性,那么这些变量将会是 undefined

let {a, b, c} = {d: 1, e: 2, f: 3};
console.log(a); // undefined
console.log(b); // undefined
console.log(c); // undefined

如果想要为未赋值的变量设置默认值,可以使用 = 来设置默认值:

let {a, b = 2, c = 3} = {a: 1};
console.log(a); // 1
console.log(b); // 2
console.log(c); // 3

嵌套解构赋值

解构赋值可以嵌套使用,例如:

let {a, b: {c}} = {a: 1, b: {c: 2}};
console.log(a); // 1
console.log(c); // 2

上面的代码中,将对象 {a: 1, b: {c: 2}} 中的 a 赋值给变量 a,将对象 {c: 2} 中的 c 赋值给变量 c

使用解构赋值交换变量的值

使用解构赋值可以方便地交换两个变量的值:

let a = 1, b = 2;
[a, b] = [b, a];
console.log(a); // 2
console.log(b); // 1

上面的代码中,将变量 a 的值赋值给变量 b,将变量 b 的值赋值给变量 a,从而交换了两个变量的值。

使用解构赋值作为函数参数

解构赋值可以方便地将对象或数组中的值作为函数的参数:

function foo({a, b, c}) {
  console.log(a, b, c);
}

foo({a: 1, b: 2, c: 3}); // 1 2 3

上面的代码中,将对象 {a: 1, b: 2, c: 3} 中的属性值作为函数 foo 的参数,并打印出来。

结语

ES6的解构赋值是一种非常方便的语法,可以让我们更方便地进行变量赋值、参数传递等操作。掌握了解构赋值的使用方法,可以让我们更加高效地编写代码。