当前位置: 首页 > news >正文

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);//对应的值为nulllet [a2 = 1] = [null];console.log("a2=" + a2);//对应的值为undefinedlet [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

相关文章:

  • 开源软件对技术以及行业发展的影响
  • 小米平板6获取root权限教程
  • 2 月 7 日算法练习- 数据结构-树状数组上二分
  • 《合成孔径雷达成像算法与实现》Figure6.8
  • 零基础学Python之整合MySQL
  • Flask 入门7:使用 Flask-Moment 本地化日期和时间
  • macOS的设置与常用软件(含IntelliJ IDEA 2023.3.2 Ultimate安装,SIP的关闭与开启)
  • 系统架构设计师-22年-上午答案
  • 《Git 简易速速上手小册》第1章:Git 基础(2024 最新版)
  • 微信小程序解决华为手机保存图片到相册失败
  • 5.electron之主进程起一个本地服务
  • 打卡今天学习的命令 (linux
  • Swift Combine 管道 从入门到精通三
  • Java实现批量视频抽帧2.0
  • java list集合相关介绍和方法使用操作
  • [PHP内核探索]PHP中的哈希表
  • 【前端学习】-粗谈选择器
  • 4个实用的微服务测试策略
  • JSONP原理
  • LeetCode18.四数之和 JavaScript
  • mongodb--安装和初步使用教程
  • 大整数乘法-表格法
  • 简单基于spring的redis配置(单机和集群模式)
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 排序算法学习笔记
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 通过npm或yarn自动生成vue组件
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 因为阿里,他们成了“杭漂”
  • 用jquery写贪吃蛇
  • 自动记录MySQL慢查询快照脚本
  • 自制字幕遮挡器
  • 06-01 点餐小程序前台界面搭建
  • RDS-Mysql 物理备份恢复到本地数据库上
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #if 1...#endif
  • #考研#计算机文化知识1(局域网及网络互联)
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (分布式缓存)Redis分片集群
  • (六)软件测试分工
  • (十一)图像的罗伯特梯度锐化
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .NET Core 2.1路线图
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...