解构赋值

1. 数组的解构赋值  ——看结构

概念:左边用数组把变量包裹起来和右边结构进行赋值,一般都用于数组结构

特殊情况:

        1. 当右边个数小于左边个数时,依旧看结构取值,若左边多出的部分出现了...扩展运算符,就赋值为[ ],没有时就为undefined。...只能有一个并且位于最后;

        2. 当左边个数小于右边个数时,依旧看结构取值

        3. 结构默认值时,就为设置的默认值

        4. 若等号右边不是数组,或者说不是可遍历接口的数据(除了字符串、数组、set、arguments、map外),会报错。

        let [a,bb,c,d] = [1,2,3,55];
        console.log(a,bb,c,d);  //1 2 3 55
        //情况1
        let [e,f,g,...h] = [1,2,3];
        console.log([e,f,g,h]);  //[1, 2, 3, []]
        let [o,p,q] = [1,2,];
        console.log([o,p,q]);  //[1, 2, undefined]
        //情况2
        let [i,j] = [1,2,3];
        console.log([i,j]);  //[1, 2]
        //情况3
        let [w=2] = [undefined];
        console.log(w);  //2
        //情况4
        let [r,s,t] = 'qwer';
        console.log(r,s,t);  // q w e
        let [k,l,m] = { };
        console.log([k,l,m]);  //报错:{} is not iterable

2. 对象的解构赋值——看属性名

对象的简介表达式:当属性名和值是同一个时,就可以省略值,只写一个即可

变量必须与属性同名,才能取到正确值;右边没有左边的属性名,则取值为undefined

        const {name,age} = {name:'xzq',age:40 };//对象的简介表达式,属性名和值一样时,只写一个
        //name:xzq,age:40
        const {name1,age1} = { name1:'lc',age2:33};
        //name1:'lc',ag1:undefined
        const {title} = {'asd'};
        console.log(title);  //报错

3. 函数参数的解构赋值 ——看参数

        function multiply([x,y]){
            return x*y;
        }
        console.log(multiply([1,3]));  //3 x=1,y=3

        //add的参数指定默认值,而不是x,y
        let add = ({x,y} = {x:0,y:0})=>{
            return `x=${x},y=${y}`;
        };
        console.log(add({x:2,y:3}));  //x=2,y=3
        console.log(add({x:2}));  //x=2,y=undefined
        console.log(add({}));  //=undefined,y=undefined

        //对abb的参数解构赋值,解构失败时为默认值
        let abb = ({x=0,y=0} = { })=>{
            return `x=${x},y=${y}`;
        };
        console.log(abb({x:2,y:3}));  //x=2,y=3
        console.log(abb({x:2}));  //x=2,y=0
        console.log(abb({}));  //x=0,y=0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值