ES6-数组的解构赋值

一、数组的解构赋值的规律

- 只要等号两边的模式相同,左边的变量就会被赋予对应的值

二、数组的解构赋值的例子讲解

1)简单的示例(完整的解构赋值)

  • 示例
//基本的模式匹配
// a,b,c依次和1,2,3对应
      let [a, b, c] = [1, 2, 3];
      console.log("a=" + a);
      console.log("b=" + b);
      console.log("c=" + c);

  • 效果
    在这里插入图片描述

2)简单的示例(部分的解构赋值)

  • 示例一(逗号占位符)
      let [, , c] = [1, 2, 3];
      console.log("c=" + c);
  • 效果
    在这里插入图片描述
  • 示例二(前者部分赋值)
      let [a, b] = [1, 2, 3];
      console.log("a=" + a);
      console.log("b=" + b);
  • 效果
    在这里插入图片描述

3)过度解构赋值

  • 如果解构不成功,一般变量的值就等于undefined
      let [a, b, c, d] = [1, 2, 3];
      console.log("a=" + a);
      console.log("b=" + b);
      console.log("c=" + c);
      console.log("d=" + d);
  • 效果
    在这里插入图片描述

4)较为复杂的解构赋值

  • 嵌套示例
      //模式匹配
      //令arr_end=[[b],c],arr_init=[[2],3]
      //则[a,[[b],c]]=[a,arr_end]=[1,[[2],3]]=[1,arr_init]
      //即[a,arr_end]=[1,arr_init]
      //即a和1对应,arr_end和arr_init对应
      //同理b和2对应,c和3对应
      let [a, [[b], c]] = [1, [[2], 3]];
      console.log("a=" + a);
      console.log("b=" + b);
      console.log("c=" + c);
  • 效果
    在这里插入图片描述

5)剩余运算符

  • 示例
      let [first, ...other] = [1, 2, 3, 4];
      console.log("first=" + first);
      console.log("other=" + other);
  • 效果
    在这里插入图片描述

6)默认值

- 解构赋值允许指定默认值
  • 示例
      //有对应的值
      let [a, b = 1] = [1, 2, 3];
      console.log("a=" + a + ",b=" + b);
      //无对应的值
      let [a1, b1 = 1] = [1];
      console.log("a1=" + a1 + ",b1=" + b1);
      //对应的值为null
      let [a2 = 1] = [null];
      console.log("a2=" + a2);
      //对应的值为undefined
      let [a3 = 1] = [undefined];
      console.log("a3=" + a3);
  • 效果
    在这里插入图片描述
  • 问题
- 大家可能有个疑惑
- 问题:为什么语句let [a3 = 1] = [undefined];中a3对应的值为undefined,为什么运行结果a3=1?
- 答案:ES6 内部使用严格相等运算符(===),判断一个位置是否有值,
	    当一个数组成员严格等于undefined,默认值就会生效
  • 注意
- 默认值可以引用解构赋值的其他变量,但该变量必须已经声明
let [x = 1, y = x] = [];     // x=1; y=1
let [x = 1, y = x] = [2];    // x=2; y=2
let [x = 1, y = x] = [1, 2]; // x=1; y=2
let [x = y, y = 1] = [];     // ReferenceError: y is not defined

相关推荐

  1. ES6赋值

    2024-02-04 13:00:03       14 阅读
  2. ES6 赋值

    2024-02-04 13:00:03       18 阅读
  3. ES6数组赋值【详解】

    2024-02-04 13:00:03       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-04 13:00:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-04 13:00:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-04 13:00:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-04 13:00:03       20 阅读

热门阅读

  1. 使用go并发网络爬虫

    2024-02-04 13:00:03       33 阅读
  2. Unity游戏开发架构设计指南

    2024-02-04 13:00:03       29 阅读
  3. flutter 中实现前端的promise

    2024-02-04 13:00:03       31 阅读
  4. 八、测试分析报告(软件工程)

    2024-02-04 13:00:03       29 阅读
  5. k8s集群资源(pod、镜像等)自动回收

    2024-02-04 13:00:03       28 阅读
  6. 使用NLTK进行自然语言处理:英文和中文示例

    2024-02-04 13:00:03       36 阅读
  7. offsetof 判断结构体中成员的偏移

    2024-02-04 13:00:03       33 阅读
  8. Git工作中常用命令

    2024-02-04 13:00:03       32 阅读
  9. C语言-1

    2024-02-04 13:00:03       25 阅读
  10. 开源软件的影响力

    2024-02-04 13:00:03       35 阅读
  11. 【BBF系列协议】TR181-1 TR069的设备数据模型

    2024-02-04 13:00:03       31 阅读