ES6_入门(4)_数组的解构赋值
//2017/7/14
//变量的解构赋值(解构:Destructuring) //(1)数组的解构赋值 let [a,b,c]=[1,2,3];//模式匹配,只要等号两边的模式相同,左边的变量就会被赋予对应的值。 //eg:
let [foo,[[bar],baz]]=[1,[[2],3]];
console.log(foo);//
console.log(bar);//
console.log(baz);// let[,,third]=['foo','bar','baz'];
console.log(third);//baz let [x,,y]=[1,2,3];
console.log(x);//
console.log(y);// let [head,...tail]=[1,2,3,4];
console.log(head);//
console.log(tail);//[2,3,4] //如果解析不成功,变量的值就等于undefined。
//将剩余数组赋值给一个变量,下面例子中的y解析不成功,所以是undefined,剩余元素赋值给z,因此是一个空的数组。
let[x,y,...z]=['a'];
console.log(x);//a
console.log(y);//undefined
console.log(z);//[] //注意:如果剩余元素右侧有一个逗号,会抛出错误的异常,因此剩余元素必须是数组的最后一个元素。
var [a,...b,]=[1,2,3];
console.log(b);//报错:es6.html:285 Uncaught SyntaxError: Rest element must be last element //如果等号的右边不是数组(或者严格地说,不是可遍历的结构,参见《Iterator》一章),那么将会报错。
// 报错
let [foo] = 1;
let [foo] = false;
let [foo] = NaN;
let [foo] = undefined;
let [foo] = null;
let [foo] = {} //解构赋值指定默认值
//注意:ES6内部使用严格相等运算符(===),判断一个位置是否有值,所以,如果一个数组成员不严格等于undefined,默认值是不会生效的。 let [x=1]=[];
console.log(x);// let[x=2]=[1];
console.log(x);// //以上例子说明,但右边对应数组有相应的元素的时,左边的默认值就会失效,只有当右边没有相应位置的元素时,左边默认值才会生效。 //如果默认值是一个表达式,那么这个表达式是惰性求值的,即只有在用到的时候,才会求值。
function f(){
console.log('aaa');
} let[x=f()]=[1];//因为x可以取到值,所以上面的f函数不会执行,上面的等价于下面的代码。 let x;
if([1][0]===undefined){
x=f();
}else{
x=[1][0];
} // 注意: [1] 是只含元素 1 的数组
77 // [0] 是取数组的第 0 个元素
78 // [1][0] 的结果就是 1
79 // [1][0] === undefined 只是个条件判断而已,即 1 === 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 // 上面最后一个表达式之所以会报错,是因为x用到默认值y时,y还没有声明。
ES6_入门(4)_数组的解构赋值的更多相关文章
- ES6 数组的解构赋值
数组的解构赋值 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 以前,为变量赋值,只能直接指定值. let a = 1; let b = ...
- ECMAScript6 入门教程记录 变量的解构赋值
(1)变量的解构赋值 基本用法:ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). let a = 1; let b = 2; let c = ...
- ECMAScript 6 -- 数组的解构赋值
模式匹配:只要等号两边的模式相同,左边的变量就会被赋予对应的值. let [a, b, c] = [1, 2, 3]; 嵌套数组进行解构: let [foo, [[bar], baz]] = [1, ...
- ES6变量的解构赋值(一)数组的解构赋值
let[a,...arr]=[1,2,3,4];//a==>1 arr==>[2,3,4] let [x, y, ...z] = ['a'];//a==>'a' y==>und ...
- ES6学习-4 解构赋值(1)数组的解构赋值
解构赋值是ES6很大的一个提升,为我们带来了很多方便,但用不好,会使程序的可读性变差,所以用时要注意,尽量保持程序的易读性. 数组解构赋值 在JS没有支持解构赋值之前,我们声明几个变量并赋值通常都是像 ...
- ES6入门之变量的解构赋值(二)
前言 在上一章 ES6入门之let和const命令中我们对ES6的相关语法已经有了初步了解,上一章中我们主要学习了三大部分的内容,let命令的使用,块级作用域,const命令的使用,那么从本篇博客将进 ...
- ECMAScript 6入门 - 变量的解构赋值
定义 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 解构赋值不仅适用于var命令,也适用于let和const命令. 解构赋值的规则是,只要 ...
- es6入门2--对象解构赋值
解构赋值:ES6允许按照一定规则从数组或对象中提取值,并对变量进行赋值.说直白点,等号两边的结构相同,右边的值会赋给左边的变量. 一.数组的解构赋值: 1.基本用法 let [a, b, c] = [ ...
- ES6入门——变量的解构赋值
1.数组的解构赋值 以前为变量复制,只能直接指定值.现在ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 本质上,这种写法属于模式匹配,只要等 ...
随机推荐
- Delphi Setlength 内存释放总结
https://blog.csdn.net/lotusyangjun/article/details/8203521 一.在Setlength 被调用次数不多时,可直接使用以下代码进行释放var aa ...
- CDOJ 1960 构造哈密顿路径
题意: 给定n个点的有向完全图,希望通过其中n-1条边将n个点串起来(2<=n<=1000) 欧拉路径:经过所有边且只经过一次 哈密顿路径:经过所有点且只经过一次 思路: 本题条件特殊,有 ...
- python之https爬虫出现 SSL: CERTIFICATE_VERIFY_FAILED (同时打开fiddler就会出现)
1.参考 Py 坑之 CERTIFICATE_VERIFY_FAILED Python 升级到 2.7.9 之后引入了一个新特性,当你urllib.urlopen一个 https 的时候,会验证一次 ...
- Asp.Net Mvc 返回类型总结
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- grails服务端口冲突解决办法-【grails】
grails中默认的服务端口为,当本机中需要同时启动两个不同的项目时,就会造成端口冲突,比如启动第二个服务时就会报如下的错误: Server failed to start for port 8080 ...
- Codeforces 542D Superhero's Job 数论 哈希表 搜索
原文链接https://www.cnblogs.com/zhouzhendong/p/CF542D.html 题目传送门 - CF542D 题目传送门 - 51Nod1477 题意 定义公式 $J(x ...
- 07. Matplotlib 3 |表格样式| 显示控制
1.表格样式创建 表格视觉样式:Dataframe.style → 返回pandas.Styler对象的属性,具有格式化和显示Dataframe的有用方法 样式创建:① Styler.applymap ...
- HBase API操作
|的ascII最大ctrl+shift+t查找类 ctrl+p显示提示 HBase API操作 依赖的jar包 <dependencies> <dependency> < ...
- jstl select <c:if test下拉菜单不能被选中!
关于select下拉菜单中出现中文时,因为编码的问题,不能用“==”来进行判断,必须要用“eq”,而且中文带上单引号: <select id="operateType" na ...
- CentOS 7开机出现welcome to emergency mode! 解决方法
CentOS7.3昨天用的还好好的的,但是今天开机提示如下(如图提示):welcome to emergency mode!after logging in ,type “journalctl -xb ...