ES6_P2 解构赋值

阮一峰的《ES6入门》学习记录

数组的解构赋值

解构赋值:es6允许按照一定模式从数组和对象中提取值,然后对变量进行赋值
解构分为完全解构和不完全解构
事实上,只要某种数据结构具有Iterator接口,都可以采用数组形式的解构赋值
解构赋值允许指定默认值
如果一个数组成员是null,默认值就不会生效

 let [x=1]=[null] //x为null 
 es6内部使用===判断一个值是否有值,如果一个数组成员不严格等于undefined,默认值不会生效 

对象的解构赋值

数组是按次序排列的,变量的取值由它的位置决定;
对象的属性没有次序,变量必须和属性同名才能取到值 对象的解构赋值的内部机制是先找到同名属性,然后再赋值给对应的变量。真正被赋值的是后者,而不是前者。


字符串的解构赋值

字符串也可以解构赋值,因为此时字符串被转换为一个类似数组的对象 const [a,b,c,d,e]=‘hello’ // a-h,b-e,c-l。。。。

类似数组的对象都有一个length属性,还可以对这个属性进行赋值 let {length:len} = ‘hello’ //len:5

数值和布尔值的解构赋值

解构赋值时,如果右边是数值和布尔值,则会先转为对象
解构赋值的原则是,只要等号右边不是对象或数组,就先将其转为对象。由于null和undefined无法转为对象,所以对它们进行解构赋值时都会先报错。


函数参数的解构赋值

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

圆括号问题

建议,只要有可能,就不要在模式中放置圆括号
不能使用圆括号的三种情况

  1. 变量声明语句 let [(a)] = [1]
  2. 函数参数 function fun([(z)]){return z}
  3. 赋值语句的模式 ({p:a}) = {p:42}

可以使用圆括号的只有一种情况,赋值语句的非模式部分可以使用圆括号 [(b)]=[3]


用途

  1. 交换变量的值 [x,y]=[y,x]
  2. 从函数返回多个值
 function exzample(){
	 return  [1,2,3]
 } 
 let [a,b,c] = exzample    
  1. 函数参数的定义
  2. 提取json数据
  3. 函数参数的默认值
  4. 遍历Map解构
    1. 获取对象的键名 for(let [key] of map)
    2. 获取键值 for(let [,value] of map)
  5. 输入模块的指定方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值