基本用法:es6允许按照一定模式,从对象和数组中提取值,对变量进行赋值,被称为解构赋值
let [a, b, c] = [1, 2, 3];
// a=1;b=2;c=3
只要等号两边的模式相同,左边的变量就会被赋予对应的值
Set 结构,也可以使用数组的解构赋值。
let [x, y, z] = new Set(['a', 'b', 'c']);
x // "a"
注意点:
(1)如果要将一个已经声明的变量用于解构赋值,必须非常小心。
// 错误的写法
let x;
{x} = {x: 1};
// SyntaxError: syntax error
JavaScript 引擎会将{x}理解成一个代码块,从而发生语法错误
(2)解构赋值允许等号左边的模式之中,不放置任何变量名。因此,可以写出非常古怪的赋值表达式。
({} = [true, false]);
({} = 'abc');
({} = []);
上面的表达式虽然毫无意义,但是语法是合法的,可以执行。
(3)由于数组本质是特殊的对象,因此可以对数组进行对象属性的解构
let arr = [1, 2, 3];
let {0 : first, [arr.length - 1] : last} = arr;
first // 1
last // 3
网友评论