数组的解构赋值
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。

以前,为变量赋值,只能直接指定值。

let a = 1;
let b = 2;
let c = 3;

ES6 允许写成下面这样。

let [a,b,c] = [1,2,3];
console.log(a); // 1
console.log(b); // 2
console.log(c); // 3

下面的同样会被解析

let [foo, [[bar], baz]] = [1, [[2], 3]];
foo // 1
bar // 2
baz // 3let [ , , third] = ["foo", "bar", "baz"];
third // "baz"let [x, , y] = [1, 2, 3];
x // 1
y // 3

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

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

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

对于 Set 结构,也可以使用数组的解构赋值。

let [x, y, z] = new Set(['a', 'b', 'c']);
console.log(x) // "a"
console.log(y) // "b"
console.log(z) // "c"

解构赋值允许指定默认值。

var [foo = true] = [];
console.log(foo) // truevar [x, y = 'b'] = ['a']; // x='a', y='b'
console.log(x);
console.log(y);
var [x, y = 'b'] = ['a', undefined]; // x='a', y='b'
console.log(x);
console.log(y);var [x, y = 'b'] = ['a', 'c']; // x='a', y='c'
console.log(x);
console.log(y);

注意,ES6 内部使用严格相等运算符(===),判断一个位置是否有值。所以,只有当一个数组成员严格等于undefined,默认值才会生效。

var [x = 1] = [undefined];
console.log(x) // 1var [x = 1] = [null];
console.log(x) // null

上面代码中,如果一个数组成员是null,默认值就不会生效,因为null不严格等于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

转载于:https://www.cnblogs.com/jiqing9006/p/9226215.html

ES6 数组的解构赋值相关推荐

  1. ES6数组的解构赋值( 中)

    数组的解构赋值的用法有以下几情况要注意: 1.结构赋值可以嵌套的 数组的解构赋值的用法有以下几情况要注意:1.结构赋值可以嵌套的 var [ a,b,[ c1,c2 ] ] = [ 1,2,[ 3.1 ...

  2. 阮一峰 / ES6 数组的解构赋值

    目录 一.定义 二.详情讲解 1.数组解构:数组解构时数组的元素是按次序排列的,变量的取值由它的位置决定 2.对象解构:对象解构时对象的属性没有次序,变量必须与属性同名,才能取到正确的值. 三.用途 ...

  3. ES6新语法--解构赋值

    对象解构赋值 ※很重要 /*** 对象解构赋值:获取元素中属性的值,然后赋值给变量*///声明一个对象 let obj = {name:'chen',age:38,gender:'man',score ...

  4. ES6——变量的解构赋值

    ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构. let [a, b] = [1, 2]; let {c, d} = {c: 3, d: 4};console.log(a ...

  5. JS基础之数组--概述、创建数组的几种方式、数组的特点、数组的常用方法、数组的解构赋值、数组高级API

    一.概述 描述:数组(array)是按照一定顺序排列的一组值,每个值都拥有自己的编号,编号从0开始.整个数组用方括号来表示. 语法:var arr=[item1,item2,item3-] 1.1 注 ...

  6. ES6变量的解构赋值--对象篇

    目录 使用方式 普通形式 嵌套结构 使用默认值 注意事项 上一篇我们讲解了数组的解构赋值,解构还可以用于对象.字符串等等,这里我们来讲解对象的解构赋值. ES6变量的解构赋值--数组_zxn20012 ...

  7. (34)2021-02-24(ES6变量的解构赋值)

    ES6变量的解构赋值 一. 变量的解构赋值 1.什么是解构 2.数组解构赋值 不完全解构 3.对象解构赋值 方法解构 注意点 4.字符串解构 5.函数参数的解构赋值 6.用途 6.1 交换变量的值 6 ...

  8. es6—变量的解构赋值

    数组的解构赋值 /* 1.变量的解构赋值: * 数组的元素是按次序排列的,变量的取值由它的位置决定: * 从数组和对象中提取值,对变量进行赋值,这被称为解构; * 属于"模式匹配" ...

  9. 【ES6(2015)】解构赋值Desctructuring

    文章目录 1. 数组解构赋值 2. 对象解构赋值 3. 字符串解构赋值 在 ES6 中新增了变量赋值的方式:解构赋值.允许按照一定模式,从数组和对象中提取值,对变量进行赋值.如果对这个概念不了解,我们 ...

最新文章

  1. 软件测试基础 - 测试覆盖率
  2. 【数据分析】百度内部报告解析00后移动互联网行为
  3. VS2019社区版(Community)试用30天过期的有效解决办法
  4. JavaScript 精度问题以及JavaScript 浮点数陷阱及解决方案
  5. Hashtable combox绑定数据
  6. druid 手动指定数据源_Spring Boot2 系列教程(二十)整合JdbcTemplate 多数据源
  7. “方法X对于类型Y是模糊的” Java模糊方法调用null错误
  8. 2022.4.7网页一直在加载中,无提示
  9. 网页数据导出为Excel(带图片)
  10. Java | ProGuard——java代码混淆利器
  11. [转]设计工作6年感触随笔
  12. QGIS 影像图黑色背景去除
  13. 涨姿势!3D游戏里的男女性角色是这样建模出来的
  14. 市场复苏下:报复性消费,了解一下~
  15. JavaScript-筑基(二十五)navigator对象(判断页面打开终端)、history对象
  16. [推荐系统] SVD、FunkSVD、BiasSVD和SVD++
  17. mysql eva模型_1.初识mysql
  18. mysql视图存储过程触发器
  19. 计算机专业大几用到移动硬盘,2T有轻薄,4T大容量,双盘在面前,你会怎么选?—希捷2T移动硬盘评测...
  20. mysql workbench是什么意思_MySQL Workbench是干什么的?

热门文章

  1. 博客园 文章和随笔区别
  2. python, 面向对象编程Object Oriented Programming(OOP)
  3. “Runtime Error”不产生dump文件的解决办法
  4. 高效率去掉js数组中重复项
  5. ioprofile mysql_使用pt-ioprofile对MySQL作IO剖析
  6. dict过滤 python_小猿圈解析Python开发的技巧都有哪些?
  7. php dump函数详解,php中var_dump()函数的详解说明
  8. (38)FPGA数码管驱动设计(第8天)
  9. (33)VHDL实现异步复位D触发器
  10. 树莓派绿灯闪了几下不闪了_城市猎人的树莓派笔记一灯大师