• 不完全解构和剩余运算符


    不完全解构,有2种情况,1种是解构的时候变量中出现undefined。只要出现undefined,这个属于解构不成功。

    2种是解构的时候变量中没有出现过undefined。这个属于解构成功。

    1.不完全解构(解构不成功)

    1. // 1.不完全解构(解构不成功)
    2. // 你没有向b这个变量中,去解构任何值,放置进去
    3. let [a,b]=[1];
    4. console.group('不完全解构(解构不成功)');
    5. console.log('a的值是:'+a);
    6. console.log('b的值是:'+b);

    console输出效果

    如果解构不成功,变量的值就等于undefined。

    1. // 解构默认值
    2. // 在解构数组中数据的时候, 我们在左侧变量中 给其指定一个默认值,目的以防止右侧区域有undefined
    3. let[foo=true]= [];
    4. console.group('解构默认值');
    5. console.log(foo);

     console输出效果

    以上两种情况都属于解构不成功,foo的值都会等于undefined。

    2.不完全解构(解构成功)

    另一种情况是不完全解构,即等号左边的模式,只匹配一部分的等号右边的数组。这种情况下,解构依然可以成功。

    1. // 2.不完全解构(解构成功)
    2. let [x,y]= [1,2,3];
    3. console.group('不完全解构(解构不成功)');
    4. console.log('x的值是:'+x);
    5. console.log('y的值是:'+y);

      console输出效果

    上面两个例子,都属于不完全解构,但是可以成功。

    如果等号的右边不是数组(或者严格地说,不是可遍历的结构),那么将会报错。

     // 报错
    let [foo] = 1;
    let [foo] = false;
    let [foo] = NaN;
    let [foo] = undefined;
    let [foo] = null;
    let [foo] = {};

    上面的语句都会报错,因为等号右边的值,要么转为对象以后不具备 Iterator 接口(前五个表达式),要么本身就不具备 Iterator 接口(最后一个表达式)。

    也可以只取数组中部分值赋值给变量

     

    1. {
    2. let[,,a] = [1,2,3,4];
    3. console.log(a);
    4. }

    console输出效果

    剩余运算符

     

    剩余运算符 在数组解构赋值中的使用

    剩余运算符 特点 :在变量名的前面有三个小点,例如...b

    1. // ...剩余运算符 在数组结构赋值中使用
    2. // ...b 将数组中 的剩余部分·,存放在b这个变量中
    3. let [a,...b]= [1,2,3];
    4. console.group('剩余运算符 在数组结构赋值中使用');
    5. console.log(a);
    6. console.log(b);

    console输出效果

     

  • 相关阅读:
    Flutter学习笔记 —— 关于Navigator路由跳转二级页面不更新的解决办法
    实战教程:从下载到成功安装,VMware与CentOS 7的完美结合
    ES6 入门教程 14 Set 和 Map 数据结构 14.1 Set
    Http客户端Feign
    从老王三角到忍狠美三字诀
    蓝桥杯--挖地雷
    这些数据泄露方式,80%的企业不易发现
    Elasticsearch基础篇(三):Elasticsearch7.x的集群部署
    四、固态硬盘存储技术的分析(论文)
    lambda表达式
  • 原文地址:https://blog.csdn.net/m0_71814235/article/details/126168731