ES6 2-变量的解构赋值

原创 MMJC6 随笔 2016年javascript学习笔记 214阅读 2018-02-26 18:02:48 举报

数组的解构赋值:按对应位置进行赋值。

1.如果结构不成功,变量的值为undefined,可以不完全结构,即等号左边变量只匹配一部分的数组。

2.只要等号右边具有Iterator 接口,都可以进行数组形式的解构赋值。

3.解构赋值允许设置默认值,并且对应位置===undefined,默认值才会生效。

4.如果默认值为表达式,则此表达式惰性求值,即对应位置===undefined时,才会求值,否则不执行。

对象的解构赋值:不按次序,变量必须与属性(key值)同名,才能取到正确的值。

1.

2.如果变量名和属性名不一致,必须写成下面这样

这实际上说明,对象的解构赋值是下面形式的简写:
let { foo:foo, baz:baz} = { foo:11, baz:'aa' }
就是说,对象的解构赋值时,是先在等号右边找到同名的key值,再将值付给等号左边key值对应的变量。

3.对象的解构也可以设置默认值
默认值生效的条件是,对象的属性值严格等于undefined。

4.数值和布尔值的解构赋值会先调用toString()方法,(任何不是数组和对象的类型都先转换为对象),null和undefined无法转为对象,因此会报错。

5.函数参数也可以进行解构赋值,也可以使用默认值。
下面代码是带默认参数的参数,解构赋值流程:1.判断有没有传实参,如果有实参,则解构实参,如果没有,解构参数默认值(例子中 函数参数默认值是{}) 2.结构参数默认值,因为参数默认值为空,所以x,y分别取解构赋值的默认值。个人觉得比较难以理解,找个一个比较好的解析例子解析

与之对应的另一种写法会有不同的结果

上面代码是为函数move的参数指定默认值,而不是为变量x和y指定默认值,所以会得到与前一种写法不同的结果。

用途

1.交换变量的值

2.从函数返回多个值,无需把返回值包装成数组或对象返回

3.函数参数的定义
解构赋值可以将一组参数变量名对应起来,把数组存在变量中,但在函数内部,参数指向数组成员。

4.对提取json数据,尤其有用

5.函数参数的默认值,避免在函数内部写成 var name = options.name || 'defaultName'

6.遍历Map结构,获取键和值

7.输入模块的指定方法
加载模块时,往往需要指定输入哪些方法。解构赋值使得输入语句非常清晰
const { SourceMapConsumer, SourceNode } = require("source-map");

评论 ( 1 )
最新评论
橙云生 2018-02-27 09:08:39 1F

这个解构 跟python里面一模一样