解构赋值
ES6允许按照一定模式从数组和对象中提取值,然后对变量进行赋值,该操作即为解构(Destructuring)。
数组的解构赋值
基本用法
该写法属于模式匹配,只要等号两边的模式相同,左边的变量就会被赋予对应的值。
1.如果结构不成功则会返回undefined
bar为undefined
2.如果赋值不是数组则会报错。
3.没有变量接收的解构值会被忽略掉。
4.只要某种数据接口具有Iterator(迭代器)接口,都可以采用数组形式的解构赋值。
5.对于未知长度的数组,想要部分获取数值可以使用数组解构赋值。
默认值
1.解构赋值可以指定默认值
只有一个数组成员严格等于undefined时,默认值才会生效
2.默认值可以引用解构赋值的其他变量,但改变量必须已经声明,否则会报错。
3.如果默认值是一个表达式,会采用惰性求值,只有在用到时才会求值。
对象的解构赋值
对象解构赋值与数组不同
1.对象的属性没有次序,变量必须与属性同名才能取到正确的值。
2.如果变量名与属性名不一致,必须明确对应关系。
3.如果要将一个已经声明的变量用于解构赋值,需要用括号()括起来
字符串的解构赋值
1.字符串的解构能够返回属性和方法
数值和布尔值的解构赋值
解构赋值的原则是如果等号右边不是对象则先转化为对象
函数参数的解构赋值
###实参赋值给形参时能使用解构赋值