变量的解构赋(数组和对象)


    数组的解构赋值

    数组的解构赋值:按照模式匹配的方式从数组或对象中提取值对变量进行赋值,如果解构不成功,变量的值就等于undefined。

    1.如果等号右边是不可遍历的结构就会报错。而对于Set结构可以使用数组的解构赋值。事实上,只要某种数据结构具有 Iterator 接口,都可以采用数组形式的解构赋值。

    2.解构赋值允许指定默认值,默认值写在等号左边用方括号括起来,例如:

    ```
    let[a,b=2]=[3,undefined];//设置a、b的默认值为都2,然后在等号右边设置a的值为3,b的值为undefined,结果输出a的值为3,b的值为2.
    ```

    
    3.当要判断一个位置是否有值时必须让数组的成员严格等于undefined.默认值才会生效

    4.如果默认值是一个表达式,那么这个表达式是惰性求值的,即只有在用到的时候才会求值

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

对象的解构赋值

    1.对象的解构赋值的内部机制实现找到同名属性,然后再赋值给对应的变量。在对对象进行解构赋值时变量必须与属性同名才能取到正确的值,与顺序无关,同时在赋值时被赋值的是等号前面冒号后面的变量。

    2.如果变量名与属性名不一致时必须使用以下形式:
    ```
    let{foo:baz}={foo:"aaa",bar:"bbb"};//等号前面表明baz的值与foo的值形同,等号右边把给foo赋值为aaa,当打印baz时自动将baz赋值为与foo一样的值;或者
    let obj={first:"hello",last:"world"};let{first:f,last:1}=obj;
    let {foo:baz}={foo:"aaa",bar:"bbb"};//打印baz结果为"aaa",打印foo结果报错。说明foo是匹配的模式,真正被赋值的是变量baz,而不是模式foo
    ```
    3.当使用圆括号解构赋值时应使用以下形式:`let x;({x}={x:1});`
    4.对象的解构赋值可以赋值到某个变量,例如:`let{log,sin,cos}=Math;`以上代码将Math对象的对数、正弦、余弦三个方法赋值到对应的变量上
字符串的解构赋值
    ```
    const[a,b,c,d,e]='hello';
         a // "h"
         b // "e"
         c // "l"
         d // "l"
         e // "o"
        //类似数组的对象都有一个length属性,let{length:len}='hello';
        len//5
        ```
        解构赋值的规则是。只要等号右边的值不是对象或数组,就先将其转化为对象,由于undefined和null无法转化为对象,所以进行解构赋值时都会报错。

函数参数的解构赋值
        ```
         function add([x,y]){//函数add的参数表面上是一个数组,但在传参的那一刻数组参数就被解构成变量x和y
             return x+y;
         }
         add([1,2]);
        ```

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值