ECMA Script 6新特性之解构赋值
1.基本概念用法
1.1解构赋值:ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值。
var a = 1;
var b = 2;
var c = 3;
/*上述赋值语句用解构赋值为*/
var [a,b,c] = [1,2,3];
1.2上述的解构发生在等号左右模式相同的情况下,如果等号两边的模式不一致,解构可能会不成功;
/*当变量多于值个数或无值时,解构失败*/
var [foo] = [];
var [a,b] = [1];
/*当变量少于值个数,不完全解构*/
let [a,b] = [1,2,3]; //可解构,a = 1, b = 2
let [a,[b],c] = [1,[2,3],4] //可解构,a = 1, b = 2,c=4
/*等号右边不是数组时,报错,下述代码全部都会报错*/
let [foo] = 10;
let [foo] = true;
let [foo] = null;
let [foo] = {};
1.3解构赋值可指定默认值:
var [foo = true] = []; //foo = true;
var [a,b = 2] = [1]; //a = 1;b = 2;
另需注意,指定默认值的数组成员必须是严格等于undefined,否则默认值不会生效;
/**/
var [x = 1] = [undefined]; //x =1
var [x = 1] = [null]; //x=null
var [x ,y= 1]= [2]; //y = 1
如果默认值是一个表达式,那么这个表达式是惰性求值的,即只有在用到的时候,才会求值;
function f() {
console.log('aaa');
}
let [x = f()] = [1];
/*上述代码中因为x能取到值,因此f()函数不会执行*/
默认值可以引用解构赋值的其他变量,但该变量必须已经声明;
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还没有声明。因此报错*/
ECMA Script 6新特性之解构赋值的更多相关文章
- ECMAscript6新特性之解构赋值
在以前,我们要对变量赋值,只能直接指定值.比如:var a = 1;var b = 2;但是发现这种写法写起来有点麻烦,一点都不简洁,而在ECMAScript6中引入了一种新的概念,那就是" ...
- js--ES6新特性之解构
前言 es6 中引入了解构这一新特性,了解解构成为一个格合前端必须掌握的基础知识,不仅作为了面试的重要考查知识,同时能极大提高我们平常工作的开发效率.本文来总结一下需要掌握的解构知识点. 正文 1.什 ...
- 【ES6】对象的新功能与解构赋值
ES6 通过字面量语法扩展.新增方法.改进原型等多种方式加强对象的使用,并通过解构简化对象的数据提取过程. 一.字面量语法扩展 在 ES6 模式下使用字面量创建对象更加简洁,对于对象属性来说,属性初始 ...
- ES 6 系列 - 赋值的新方式:解构赋值
变量的解构赋值 es 6 允许按照一定的模式,从数组和对象中提取值,然后对变量进行赋值,这被称之为解构: 一.数组的解构赋值 最基本写法: let [a, b, c] = [1, 2, 3]; a / ...
- javascript ES6 新特性之 解构
解构的作用是可以快速取得数组或对象当中的元素或属性,而无需使用arr[x]或者obj[key]等传统方式进行赋值 var arr = [1, 2, 3]; //传统方式 var a = arr[0], ...
- ES6新特性之解构使用细节
ES6的解构说白了就是能够让我们一次性取到多个值,大致可分为一下几个方面 1.数组解构 普通的一维数组解构,如下one = array[0],two=array[1],three=array[2] v ...
- ES6解构赋值
前面的话 我们经常定义许多对象和数组,然后有组织地从中提取相关的信息片段.在ES6中添加了可以简化这种任务的新特性:解构.解构是一种打破数据结构,将其拆分为更小部分的过程.本文将详细介绍ES6解构赋值 ...
- ES6里的解构赋值
我们经常定义许多对象和数组,然后有组织地从中提取相关的信息片段.在ES6中添加了可以简化这种任务的新特性:解构.解构是一种打破数据结构,将其拆分为更小部分的过程. 一.引入背景 在ES5中,开发者们为 ...
- ES6入门之变量的解构赋值(二)
前言 在上一章 ES6入门之let和const命令中我们对ES6的相关语法已经有了初步了解,上一章中我们主要学习了三大部分的内容,let命令的使用,块级作用域,const命令的使用,那么从本篇博客将进 ...
随机推荐
- java线程捕获异常
java多线程程序中,所有线程都不允许抛出未捕获的checked exception(比如sleep时的InterruptedException),也就是说各个线程需要自己把自己的checked ex ...
- 3D max导出的设置选项
一3D max导出的设置选项
- 6.jQuery之类操作不影响原先类,but原生js却是会影响
注意jQuery和js的区别: <style> .one { width: 200px; height: 200px; background-color: pink; transition ...
- luogu P4548 [CTSC2006]歌唱王国
传送门 这题\(\mathrm{YMD}\)去年就讲了,然而我今年才做(捂脸) 考虑生成函数,设\(f_i\)表示最终串长为\(i\)的概率,其概率生成函数为\(F(x)=\sum f_ix^i\), ...
- springcloud-概念
springcloud-概念 一.架构演进过程 单体架构----分布式架构----SOA(eg.dubbo)服务治理架构----微服务 随着互联网的发展,需求的激增致使网站应用规模的扩大,最后转成了技 ...
- PHPStorm开启MiniMap功能
Sublime Text 右侧的代码导航(MiniMap)功能相当好用,PHPStorm第三方插件,可以实现相同功能. 只需要下载 CodeGlance 插件即可,如下操作
- html获取摄像头和相册
<input type="file" accept="video/*";capture="camcorder"> <inp ...
- git ssh 绑定 GitLab
入职新公司之后,需要使用GitLab,可是我不会啊,又不想麻烦运维大佬,所以自己找乐一下,发现网上都是些很陈旧的教程,所以准备自己记录下来 第一步 设置Git端上的用户名和用户邮箱: 假如入你已经安装 ...
- leetcode957. N 天后的牢房
8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用. 否则,它就会被空置. ...
- Java语言利用Google的Thumbnailator处理图片
导读:在Java中制作高质量的缩略图可能是一项相当困难的任务,或者图片质量高页面加载慢等等原因使需要对图片进行处理,但是又不想写太多的代码太麻烦去处理图片,那么就可以使用Thumbnailator—— ...