//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)_数组的解构赋值的更多相关文章

  1. ES6 数组的解构赋值

    数组的解构赋值 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 以前,为变量赋值,只能直接指定值. let a = 1; let b = ...

  2. ECMAScript6 入门教程记录 变量的解构赋值

    (1)变量的解构赋值 基本用法:ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). let a = 1; let b = 2; let c = ...

  3. ECMAScript 6 -- 数组的解构赋值

    模式匹配:只要等号两边的模式相同,左边的变量就会被赋予对应的值. let [a, b, c] = [1, 2, 3]; 嵌套数组进行解构: let [foo, [[bar], baz]] = [1, ...

  4. ES6变量的解构赋值(一)数组的解构赋值

    let[a,...arr]=[1,2,3,4];//a==>1 arr==>[2,3,4] let [x, y, ...z] = ['a'];//a==>'a' y==>und ...

  5. ES6学习-4 解构赋值(1)数组的解构赋值

    解构赋值是ES6很大的一个提升,为我们带来了很多方便,但用不好,会使程序的可读性变差,所以用时要注意,尽量保持程序的易读性. 数组解构赋值 在JS没有支持解构赋值之前,我们声明几个变量并赋值通常都是像 ...

  6. ES6入门之变量的解构赋值(二)

    前言 在上一章 ES6入门之let和const命令中我们对ES6的相关语法已经有了初步了解,上一章中我们主要学习了三大部分的内容,let命令的使用,块级作用域,const命令的使用,那么从本篇博客将进 ...

  7. ECMAScript 6入门 - 变量的解构赋值

    定义 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 解构赋值不仅适用于var命令,也适用于let和const命令. 解构赋值的规则是,只要 ...

  8. es6入门2--对象解构赋值

    解构赋值:ES6允许按照一定规则从数组或对象中提取值,并对变量进行赋值.说直白点,等号两边的结构相同,右边的值会赋给左边的变量. 一.数组的解构赋值: 1.基本用法 let [a, b, c] = [ ...

  9. ES6入门——变量的解构赋值

    1.数组的解构赋值 以前为变量复制,只能直接指定值.现在ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 本质上,这种写法属于模式匹配,只要等 ...

随机推荐

  1. Android设备一对多录屏直播--(UDP组播连接,Tcp传输)

    原文:https://blog.csdn.net/sunmmer123/article/details/82734245 近期需要学习流媒体知识,做一个Android设备相互投屏Demo,因此找到了这 ...

  2. Neo4j导入本地csv问题

    把要导入的文件放到D盘,LOAD CSV WITH HEADERS FROM "file:///D:/xx.csv" AS line create (:node); 总提示输入错误

  3. Codechef EDGEST 树套树 树状数组 线段树 LCA 卡常

    原文链接http://www.cnblogs.com/zhouzhendong/p/9016579.html 题目传送门 - Codechef EDGEST 题意 给定相同点集上的两棵生成树$T_1$ ...

  4. sql 表值函数-将一个传入的字符串用2中分隔符拆分成临时表

    USE [tms]GO/****** Object: UserDefinedFunction [dbo].[fn_StrToTable_Double] Script Date: 2017/4/26 9 ...

  5. 根据cookie记录跟踪ID来确定分享对象

    一 :思路分析 1:用户注册的时候标记推客 2:推客生成分享链接 分享链接构成   (环境前缀+(此链接打开时需要调用的接口+推客的标记+&url=(商品的链接))) 3:需要写一个分享链接调 ...

  6. 电信项目java补充类

    一.DecimalFormat 1.概述 public class DecimalFormat extends NumberFormat DecimalFormat是格式为十进制数的NumberFor ...

  7. Webmin的安装

    Webmin的安装很简单,下面就详细说一下安装步骤. 1.用ssh客户端软件登陆服务器2.切换目录到root下,命令是:cd /root/3.下载Webmin的安装文件,命令是:wget http:/ ...

  8. TF之AE:AE实现TF自带数据集AE的encoder之后decoder之前的非监督学习分类—Jason niu

    import tensorflow as tf import numpy as np import matplotlib.pyplot as plt #Import MNIST data from t ...

  9. Remmarguts' Date POJ - 2449 (A*搜索|k短路)

    "Good man never makes girls wait or breaks an appointment!" said the mandarin duck father. ...

  10. Pushing Boxes POJ - 1475 (嵌套bfs)

    Imagine you are standing inside a two-dimensional maze composed of square cells which may or may not ...