ES6变量解构赋值

ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。

1:数组解构

它采取次序解构的原则进行赋值。
原则一:位置匹配

        let [a,b,c] = [1,2,3];
        console.log(a+","+b+","+c);  //1,2,3
        //  可以留空位置
        let [ , , c] = [1,2,3];  // c = 3
        //  rest形式
        let [a,...b] = [1,2,3,4]  // a = 1,b=[2,3,4] 
   

原则二:形式匹配

        let [a,[b],c] = [1,[2],3];
        console.log(a+","+b+","+c);  //1,2,3

位置二是数组,所以赋值形式也是数组。

原则三:可以有默认值,但必须保证赋值之后是undefined
例子1:

        let [a=1] = [];
        console.log(a); // a=1

上例中,a按照位置匹配赋值为undefiend,符合条件三,所以可以使用默认值1。

例子2:

let [a=2] = [null]; // null不严格等于undefiend,所以不能采用默认值,所以a=null

2.对象解构

数组解构按次序解构,对象解构按模式解构,即顺序对解构无影响,按照模式查找

let {a:b} = {a:'123'};
console.log(b); // b='123'

可以看到:a只是匹配对照用的模式,真正赋值的其实a后面的值b。

————————————————华丽的分隔线——————————————————————

例子1:解构与顺序无关。

    let { a:A, b:B} = { b:'456' ,a: '123'};
    console.log(A); // A=123
    console.log(B); // B=456

例子2:解构失败得到的是undefined

    let {a : A} = {b : '123'}; 
    console.log(A); // A = undefined

上例无a模式匹配,所以A是undefined。

例子3:用于嵌套解构的对象

    let obj = {
        p: [
            'Hello',
            { y: 'World' }
        ]
    };

    let { p, p: [x, { y }] } = obj;
    console.log(p); //['hello',{y:'World'}]
    console.log(x);  // hello
    console.log(y);  // World

如果不看解析你能看懂为什么p是这个结果,那么恭喜你,你真的很棒了。
解析:let { p, p: [x, { y }] } = obj;let { p:p, p: [x, { y }] } = obj;的简写,另外你看不懂的原因是,这是两个匹配,两次都是把obj的值赋给左边
{p:p}=obj{p:p}={p:[ 'Hello',{ y: 'World' }]}
现在这个模式就是最简单的模式匹配了。

————————————————华丽的分割线————————————————————

默认值
规则与数组的解构相同,需要严格等于undefiend

3.字符串解构

字符串可以被解构成一个类似数组的对象。

        const [a,b,c] = 'abc';
        console.log(a); // a
        console.log(b); // b 
        console.log(c); // c

参考:http://es6.ruanyifeng.com/#docs/destructuring

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值