ES6 对象的解构赋值

基本用法

u=1639226418,1984655833&fm=173&w=626&h=53&img.JPEG

1.等号右边如果不是数组,将会报错(不是可遍历结构)

2.解构赋值 var, let, const命令声明均适用

3.set结构也可解构赋值(具有Iterator接口,可采用数组形式结构赋值)

set解构:任何类型的单个值的集合

u=2700995708,4138284980&fm=173&w=624&h=49&img.JPEG

 

默认值

1.数组成员的值不严格等于undefined,默认值不生效(null的话相应值依然为null)

u=1564987500,1933455506&fm=173&w=628&h=48&img.JPEG

2.如果默认值是表达式,表达式惰性求值,只有在用到的时候才会去执行

3.默认值可以引用结构赋值的其他变量,但该变量必须已声明

 

对象结构赋值

1.数组按次序排列,对象变量必须与属性同名

u=1692626366,2355484207&fm=173&s=1C2874324D266F204A7500DA0000C0B2&w=622&h=111&img.JPEG

2.变量以前声明过,使用let赋值会报错

3.可用于嵌套结构的对象

u=3484678806,1141446313&fm=173&s=5DA83C720B634524187DA5DA000080B2&w=620&h=243&img.JPEG

line是变量,loc,start都是模式

4.对象结构可以指定默认值

(生效条件是对象属性值严格等于undefined,null不会生效,解构失败值为undefined)

5.解构模式是嵌套对象,且子对象父属性不存在,报错

6.已声明的变量解构赋值

u=3126234557,4158550901&fm=173&w=624&h=68&img.JPEG

js会将{x}理解成代码块,不将大括号写在行首即可

7.可以将现有对象的方法赋值到某个变量

let { sin, cos, log } = Math(Math对象的名为sin的方法直接赋值给sin变量)

 

字符串结构赋值

u=2998464182,3146958445&fm=173&w=623&h=49&img.JPEG

 

数值&布尔值

解构赋值规则:

① 只要等号右边不是对象先将其转化为对象,

② undefined和null无法转换为对象,报错

u=2998464182,3146958445&fm=173&w=623&h=49&img.JPEG

 

快函数参数解构

u=2266058843,2659151898&fm=173&w=618&h=87&img.JPEG

undefined会触发函数参数默认值

圆括号问题

1.变量声明语句中,模式不能带有圆括号 let {x:(c)} = {}

2.函数参数中,模式不能带有圆括号(函数参数也属于变量声明)

3.整个模式或嵌套模式中的一层,不可放入圆括号

赋值语句的非模式部分可使用

用途

1.[x, y] = [y, x]

2.函数返回的多个值分别赋值

3.函数参数与变量名对应

4.提取json数据(ajax请求返回数据处理中可用到)

u=2649810300,2815189088&fm=173&s=3C2874324B236B241E5DA5DA0000C0B2&w=624&h=113&img.JPEG

5.函数参数的默认值,避免在函数内写var foo = config.foo || ”

6.遍历Map结构

u=2222921910,2434461408&fm=173&s=841274334B634F2410D5A1DA000080B2&w=617&h=127&img.JPEG

7.引用模块的指定方法

u=1906565063,1317275261&fm=173&w=625&h=29&img.JPEG

转载于:https://my.oschina.net/jack088/blog/3002812

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值