解构赋值
解构赋值指的是按照一定规则,直接从数组和对象中提取值,对变量进行赋值。这章主要包括:
- 数组的解构赋值
- 对象的解构赋值
- 嵌套与匹配模式
- 应用
3.1 数组的解构赋值
基本用法
解构赋值的本质是模式匹配,只要左右两边的模式相同,左边的变量就会被赋予对应的值。如果解构不成功,则返回undefined。
let [d,b,c] = [1,2,3]; // => d=1;b=2;c=3
let [[f]] = [[1]]; // =>f=1
let [e,...tail] = [1,2,3,4]; // =>e=1;tail = [2,3,4]
这里let [a, b, c]
表示定义了用于数组解构的三个变量a, b, c。解构采取贪婪匹配原则,尽量解构更多的数据,并且即使模式不是完全匹配,也能部分解构成功。上面的rest(…)运算符会收录匹配到的其余数据进一个数组,但其必须出现在末尾,否则会报错。
注意:采用结构赋值的写法,变量的声明和赋值是一体的,对于let和const而言,变量不得重新声明,否则会报错。
let [a, b, c] = [1, 2, 3];
let a = 10; // 报错,因为a已经声明过了
再介绍一个乍一眼看上去容易出错的例子:
le