数组的解构赋值

<script>
        // 以前的写法.为变量赋值,只能直接指定值
        let a = 1;
        let b = 2;
        let c = 3;
        // ES6的允许写法
        let [a, b, c] = [1, 2, 3]; //从数组中提取值,按照对应位置,对变量赋值
        console.log(a, b, c); //1,2,3

        // 本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值.
        // 当左右两边不完全匹配时,出现的两种情况。
        // 1:
        let [a, b] = [1];
        console.log(a, b); //1,undefined
        // 2:
        let [a, b, c] = [1, 2, 3, 4];
        console.log(a, b, c); //1,2,3

        // 解构赋值允许指定默认值
        let [a, b = 3] = [1, undefined];
        console.log(a, b); //a = 1;b = 3而不是undefined;
        // 需要注意的是:ES6 内部使用严格相等运算符(===),判断一个位置是否有值。所以,只有当一个数组成员严格等于undefined,默认值才会生效。
        let [a, b = 3] = [1, null];
        // console.log(a, b); //a = 1;b = null而不是3 null不严格等于undefined;
        // 默认值可以引用解构赋值的其他变量, 但该变量必须已经声明
        let [x = 1, y = x] = []; // x=1; y=1。匹配项为undefined,使用默认值
        let [x = 1, y = x] = [2]; // x=2; y=2。x匹配2,默认值1无效。匹配项的第二个值不存在,y使用默认值,为x,而x=2,故,y = 2。
        let [x = 1, y = x] = [1, 2]; // x=1; y=2。匹配项完全匹配,不严格等于undefined,所以不使用默认值。x = 1,y = 2。
        let [x = y, y = 1] = []; // ReferenceError: y is not defined。y还未声明,不能使用。
    </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值