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还没有声明。因此报错*/

原文地址:https://www.cnblogs.com/LearnAndGet/p/6249612.html

时间: 2024-10-09 14:22:28

ECMA Script 6新特性之解构赋值的相关文章

ES6新特性:解构赋值(上)

1:什么是解构赋值 按照一贯的套路,接下来的内容是解释:什么是解构赋值? 来看看官方的解释: ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 这句话也不难理解,但是前端君怎么会这么敷衍了事,随便贴一段官方的文字解释就算呢. 来,我们来上一段代码进一步解释一下什么叫解构赋值. 关于给变量赋值,传统的变量赋值是这样的: var arr = [1,2,3];//把数组的值分别赋给下面的变量: var a = arr[0]; var b = a

ECMAscript6新特性之解构赋值

在以前,我们要对变量赋值,只能直接指定值.比如:var a = 1;var b = 2;但是发现这种写法写起来有点麻烦,一点都不简洁,而在ECMAScript6中引入了一种新的概念,那就是"解构",这种赋值语句极为简洁,比传统的属性访问方法更为清晰.那什么是解构呢?按照一定的模式,允许从数组或者对象中获取到值,并且对其变量进行赋值.称为"解构". 看到上图了吧,解构是不是很简洁.其实解构不单用于数组.对象,只要内部具有iterator接口,就都可以使用解构来给变量赋

【ES6】对象的新功能与解构赋值

ES6 通过字面量语法扩展.新增方法.改进原型等多种方式加强对象的使用,并通过解构简化对象的数据提取过程. 一.字面量语法扩展 在 ES6 模式下使用字面量创建对象更加简洁,对于对象属性来说,属性初始值可以简写,并可以使用可计算的属性名称.对象方法的定义消除了冒号和 function 关键字,示例如下: // Demo1 var value = "name", age = 18 var person = { age, // age: age ['my' + value]: 'Jenny

javascript ES6 新特性之 解构

解构的作用是可以快速取得数组或对象当中的元素或属性,而无需使用arr[x]或者obj[key]等传统方式进行赋值 var arr = [1, 2, 3]; //传统方式 var a = arr[0], b = arr[1], c = arr[2]; console.log(a, b, c); // 1 2 3 //解构方式 var [a, b, c] = arr; console.log(a, b, c); // 1 2 3 从上面的例子我们可以看出,要想获取一个数组中的值,我们可以利用传统的索

ES6解构赋值

前面的话 我们经常定义许多对象和数组,然后有组织地从中提取相关的信息片段.在ES6中添加了可以简化这种任务的新特性:解构.解构是一种打破数据结构,将其拆分为更小部分的过程.本文将详细介绍ES6解构赋值 引入 在ES5中,开发者们为了从对象和数组中获取特定数据并赋值给变量,编写了许多看起来同质化的代码 let options = { repeat: true, save: false }; // 从对象中提取数据 let repeat = options.repeat, save = option

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

前言 在上一章 ES6入门之let和const命令中我们对ES6的相关语法已经有了初步了解,上一章中我们主要学习了三大部分的内容,let命令的使用,块级作用域,const命令的使用,那么从本篇博客将进一步深入了解ES6中的相关语法,毕竟未来ES6是主流. 本章目标 学会数组的解构赋值 学会对象的解构赋值 学会字符串的解构赋值 学会数值和布尔值的解构赋值 学会函数参数的解构赋值 学会解构赋值的用途 本人对解构赋值的理解:模式匹配,匹配成功获取值,匹配不成功则为undefined,好比开心消消乐一样

ECMAScript 6 -- 数组的解构赋值

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

ES6新特性:利用解构赋值 (destructuring assignment), 简化代码

本文的Demo的运行环境为nodeJS, 参考:让nodeJS支持ES6的词法----babel的安装和使用 : 解构赋值是一种表达式, 利用这种新语法, 可以直接从数组或者对象中快速提取值 赋值给不同的变量, 利用这种写法的好处是减少了代码量, 一定程度优化了代码, 也有一点缺点就是阅读代码不再那么直观了. 解构赋值最简单的例子 <script> "use strict"; let [a,b,c] = [1,2,3]; console.log( a +"|&qu

Servlet 3.0 新特性详解

转自:https://www.ibm.com/developerworks/cn/java/j-lo-servlet30/ Servlet 3.0 新特性详解 张 建平2010 年 4 月 23 日发布 WeiboGoogle+用电子邮件发送本页面 6 Servlet 3.0 新特性概述 Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布.该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发和部署.其