数组与对象的解构

数组

// ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构
let [a, b, c] = [1, 2, 3]; // a:1 b:2 c:3

// 这种写法属于'模式匹配',只要等号两边的模式相同,左边的变量就会被赋予对应的值
let [aa, [[bb], cc]] = [1, [[2], 3]]; // aa:1 bb:2 cc:3
let [, , z] = [1, 2, 3]; // z:3
let [x, ...y] = [1, 2, 3, 4]; // x=1 y=[2,3,4]
let [aaa, bbb] = [11]// aaa=11 bbb=undefined 解构不成功,变量的值就等于undefined

// 解构值允许指定默认值
let [aaaa = true] = [] // aaaa=true
let [xa, xb = 22] = [11, undefined] // xa = 11 xb = 22
let [aaaaa, bbbbb = 1] = [11] // aaaaa=11 bbbbb=1
// es6内部使用严格相等运算符(===)判断一个位置是否有值,所以只有当一个成员严格等于
// undefined默认值才会生效
let [xx = 1] = [undefined]; // xx=1

对象

let {a, b} = {a: 1, b: 2}; // a=1 b=2
let {c, d} = {d: 3, c: 4}; // c=4 d = 3
let {ab} = {aa: 11, bb: 12}; // ab=undefined,没有对应的同名属性就取不到值,解构失败

let {aaa: bbb} = {aaa: 'aaa ', xyz: 'bbb'}; // bbb = 'aaa'
// 对象的解构赋值内部机制是先找到同名属性,然后再赋值给对应变量,真正被赋值的是后者,而不是前者
let obj = {first: 'hello', last: 'world'};
let {first: e, last: f} = obj // e:'hello' f:'world'

let obj1 = {
    o: [
        'hello',
        {j: 'world'}
    ]
}

let {o: [h, {j}]} = obj1 // h='hello' j='world'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值