ES6

2.解构赋值

2019-01-08  本文已影响0人  Easy_Dream

ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构赋值。

例:let [a, b, c] = [1, 2, 3]

本质上,这种写法属于‘模式匹配’,只要等号两边的模式相同,左边的变量就会被赋予对应的值(如果解构不成功,变量的值就等于undefined)。

例:let [x, y] = [1, 2, 3]

这种情况是不完全解构,即等号左边的模式,只匹配一部分等号右边的数组。

默认值

解构赋值允许指定默认值。

例:let [x, y = 2] = [1]   // y = 2

对象的解构赋值

对象的解构赋值与数组有一个重要的不同。数组的元素按次序排列,变量的值由它的位置决定;而对象的属性没有次序,变量必须与属性同名。

例1:let {a, b} = {a: 1, b: 2}

例2:let obj = {a: 1, b: 2}; let {a, b} = obj

字符串的解构赋值

字符串也可以解构赋值,字符串被转换成类似数组的对象

例:const [a, b, c, d, e] = 'hello'  // a = 'h' b = 'e' ......

数值和布尔值的解构赋值

解构赋值时,如果等号右边是数值和布尔值,则会先转为对象,由于undefined和null无法转为对象,所以对它们解构赋值会报错。

函数的解构赋值

函数的参数也可以使用解构赋值

例1:function add([x, y]) {return x + y}; add([1, 2])

例2:[[1, 2], [3, 4]].map(([a, b]) => a +b);  //[3, 7]

上一篇 下一篇

猜你喜欢

热点阅读