ES6变量的解构赋值简介

1.数组的解构赋值

ES6允许这样:
ES6变量的解构赋值简介
可以从数组中提取值,按照对应位置,对变量赋值(根据下标结构给变量)。本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。
ES6变量的解构赋值简介
// 如果数组本身还有嵌套,也可以通过下面的形式进行解构赋值,注意嵌套层次和位置要保持一致:
ES6变量的解构赋值简介
逗号占位置,依次顺延
ES6变量的解构赋值简介
不完全解构,即等号左边的模式,只匹配一部分的等号右边的数组。这种情况下,解构依然可以成功。
ES6变量的解构赋值简介
如果解构不成功,变量的值就等于undefined。
ES6变量的解构赋值简介

2.对象的解构赋值

对象的解构赋值(根据属性名解构)
let {n, a} = {n:‘tom’, a:12}
对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。
ES6变量的解构赋值简介
如果解构失败,变量的值等于undefined。 例子中的变量没有对应的同名属性,导致取不到值,最后等于undefined。相当于执行了obj.baz
ES6变量的解构赋值简介
ES6变量的解构赋值简介
对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者。
ES6变量的解构赋值简介
foo是匹配的模式,baz才是变量。真正被赋值的是变量baz,而不是模式foo。

3.函数参数的解构赋值

函数的参数也可以使用解构赋值。
ES6变量的解构赋值简介
参考:阮一峰