ES6 数组的解构赋值
数组的解构赋值
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 数组的解构赋值相关推荐
- ES6数组的解构赋值( 中)
数组的解构赋值的用法有以下几情况要注意: 1.结构赋值可以嵌套的 数组的解构赋值的用法有以下几情况要注意:1.结构赋值可以嵌套的 var [ a,b,[ c1,c2 ] ] = [ 1,2,[ 3.1 ...
- 阮一峰 / ES6 数组的解构赋值
目录 一.定义 二.详情讲解 1.数组解构:数组解构时数组的元素是按次序排列的,变量的取值由它的位置决定 2.对象解构:对象解构时对象的属性没有次序,变量必须与属性同名,才能取到正确的值. 三.用途 ...
- ES6新语法--解构赋值
对象解构赋值 ※很重要 /*** 对象解构赋值:获取元素中属性的值,然后赋值给变量*///声明一个对象 let obj = {name:'chen',age:38,gender:'man',score ...
- ES6——变量的解构赋值
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构. let [a, b] = [1, 2]; let {c, d} = {c: 3, d: 4};console.log(a ...
- JS基础之数组--概述、创建数组的几种方式、数组的特点、数组的常用方法、数组的解构赋值、数组高级API
一.概述 描述:数组(array)是按照一定顺序排列的一组值,每个值都拥有自己的编号,编号从0开始.整个数组用方括号来表示. 语法:var arr=[item1,item2,item3-] 1.1 注 ...
- ES6变量的解构赋值--对象篇
目录 使用方式 普通形式 嵌套结构 使用默认值 注意事项 上一篇我们讲解了数组的解构赋值,解构还可以用于对象.字符串等等,这里我们来讲解对象的解构赋值. ES6变量的解构赋值--数组_zxn20012 ...
- (34)2021-02-24(ES6变量的解构赋值)
ES6变量的解构赋值 一. 变量的解构赋值 1.什么是解构 2.数组解构赋值 不完全解构 3.对象解构赋值 方法解构 注意点 4.字符串解构 5.函数参数的解构赋值 6.用途 6.1 交换变量的值 6 ...
- es6—变量的解构赋值
数组的解构赋值 /* 1.变量的解构赋值: * 数组的元素是按次序排列的,变量的取值由它的位置决定: * 从数组和对象中提取值,对变量进行赋值,这被称为解构; * 属于"模式匹配" ...
- 【ES6(2015)】解构赋值Desctructuring
文章目录 1. 数组解构赋值 2. 对象解构赋值 3. 字符串解构赋值 在 ES6 中新增了变量赋值的方式:解构赋值.允许按照一定模式,从数组和对象中提取值,对变量进行赋值.如果对这个概念不了解,我们 ...
最新文章
- 软件测试基础 - 测试覆盖率
- 【数据分析】百度内部报告解析00后移动互联网行为
- VS2019社区版(Community)试用30天过期的有效解决办法
- JavaScript 精度问题以及JavaScript 浮点数陷阱及解决方案
- Hashtable combox绑定数据
- druid 手动指定数据源_Spring Boot2 系列教程(二十)整合JdbcTemplate 多数据源
- “方法X对于类型Y是模糊的” Java模糊方法调用null错误
- 2022.4.7网页一直在加载中,无提示
- 网页数据导出为Excel(带图片)
- Java | ProGuard——java代码混淆利器
- [转]设计工作6年感触随笔
- QGIS 影像图黑色背景去除
- 涨姿势!3D游戏里的男女性角色是这样建模出来的
- 市场复苏下:报复性消费,了解一下~
- JavaScript-筑基(二十五)navigator对象(判断页面打开终端)、history对象
- [推荐系统] SVD、FunkSVD、BiasSVD和SVD++
- mysql eva模型_1.初识mysql
- mysql视图存储过程触发器
- 计算机专业大几用到移动硬盘,2T有轻薄,4T大容量,双盘在面前,你会怎么选?—希捷2T移动硬盘评测...
- mysql workbench是什么意思_MySQL Workbench是干什么的?
热门文章
- 博客园 文章和随笔区别
- python, 面向对象编程Object Oriented Programming(OOP)
- “Runtime Error”不产生dump文件的解决办法
- 高效率去掉js数组中重复项
- ioprofile mysql_使用pt-ioprofile对MySQL作IO剖析
- dict过滤 python_小猿圈解析Python开发的技巧都有哪些?
- php dump函数详解,php中var_dump()函数的详解说明
- (38)FPGA数码管驱动设计(第8天)
- (33)VHDL实现异步复位D触发器
- 树莓派绿灯闪了几下不闪了_城市猎人的树莓派笔记一灯大师