ES6_入门(5)_解构赋值
学习参考:http://es6.ruanyifeng.com/#docs/destructuring
//2017/7/20
/*对象的解构赋值*/
//对象的解构赋值,当变量名的对象的属性名相同时,才能取到正确的值。
/**/
let {foo,bar}={foo:"aaa",bar:"bbb"};
console.log(foo);//aaa
console.log(bar);//bbb //变量名与属性名不相同,必须写成下面这样
/**/
var {foo:baz}={foo:'aaa',bar:'bbb'};
console.log(baz);//aaa
console.log(foo);//es6.html:701 Uncaught ReferenceError: foo is not defined //对象的解构赋值是下面形式的简写.对象的结果赋值的内部机制,是先找到同名属性,然后在赋给对应的变量。真正被赋值的是后者,而不是前者。
/**/
let{foo:foo,bar:bar}={foo:'aaa',bar:'bbb'}; let obj={
p:[
'Hello',
{y:'world'}
]
}; let{p:[x,{y}]}=obj;
console.log(p);//es6.html:714 Uncaught ReferenceError: p is not defined。注意:这里p是模式,不是变量,因此不会被赋值。
console.log(x);//Hello
console.log(y);//world //如果想要p被赋值,可以写成下面的形式
/**/
let obj={
p:[
'Hello',
{y:'world'}
]
}; let{p,p:[x,{y}]}=obj;
console.log(p);//["Hello", Object]
console.log(x);
console.log(y); /**/
var node={
loc:{
start:{
line:1,
colum:5
}
}
};
var {loc,loc:{start},loc:{start:{line}}}=node;
console.log(loc);//Object {start: Object}
console.log(start);//Object {line: 1, colum: 5}
console.log(line);//1。这里对line的属性的解构赋值,只有line是变量,loc和start都是模式,不是变量。 //对象解构指定默认值的条件是,对象的属性值严格等于undefined。
/**/
console.log(null==undefined);//true
console.log(null===undefined);//false var {x=3}={x:undefined};
console.log(x);// var {y=5}={y:null};
console.log(y);//null //解构失败,对象的值等于undefined。
/**/
let {foo}={bar:2};
console.log(foo);//undefined /*注意*/
/**/
let x;
{x}={x:1};//es6.html:763 Uncaught SyntaxError: Unexpected token =
/*上面代码报错的原因是JavaScript引擎会将{x}理解成一个代码块,从而发生语法错,所以以下代码将整个解构赋值语句,放在圆括号里,可以正确执行。*/
/**/
let x;
({x}={x:2});
console.log(x);// //字符串解构赋值
/**/
const [a,b,c,d,e]='hello';
console.log(e);//o let {length:len}='hello';
console.log(len);//5 /*解构赋值的规则是,只要等号右边的值不是对象或数组,就先将其转为对象。由于undefined和null无法转为对象,所以对它们进行解构赋值,都会报错。*/
/**/
let{prop:x}=undefined;
let{prop:y}=null;//es6.html:779 Uncaught TypeError: Cannot match against 'undefined' or 'null'. /*以下三种解构赋值不能使用圆括号*/
//(1)变量声明语句
//(2)函数参数,函数参数也属于变量声明,因此不能带有圆括号。
//(3)赋值语句的模式。不能将整个模式或是部分模式放在圆括号中。 /*可以使用圆括号的情况:赋值语句的非模式部分*/
/**/
let x=1;
let y=2;
[x,y]=[y,x];
console.log(x);//
console.log(y);//
ES6_入门(5)_解构赋值的更多相关文章
- ECMAScript 6入门 - 变量的解构赋值
定义 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 解构赋值不仅适用于var命令,也适用于let和const命令. 解构赋值的规则是,只要 ...
- es6入门2--对象解构赋值
解构赋值:ES6允许按照一定规则从数组或对象中提取值,并对变量进行赋值.说直白点,等号两边的结构相同,右边的值会赋给左边的变量. 一.数组的解构赋值: 1.基本用法 let [a, b, c] = [ ...
- ES6入门——变量的解构赋值
1.数组的解构赋值 以前为变量复制,只能直接指定值.现在ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 本质上,这种写法属于模式匹配,只要等 ...
- es6基础入门变量的解构赋值
let [a, b, c] = [1, 2, 3]; let [foo, [[bar], baz]] = [1, [[2], 3]]; foo bar baz let [ , , third] = [ ...
- ES6 学习笔记 - 变量的解构赋值
变量的解构赋值 学习资料:ECMAScript 6 入门 数组的解构赋值 基本用法 可以从数组中提取值,按照对应位置,对变量赋值.这种写法属于"模式匹配". let [a, b, ...
- ES6_入门(4)_数组的解构赋值
//2017/7/14 //变量的解构赋值(解构:Destructuring) //(1)数组的解构赋值 let [a,b,c]=[1,2,3];//模式匹配,只要等号两边的模式相同,左边的变量就会被 ...
- ES6入门之变量的解构赋值(二)
前言 在上一章 ES6入门之let和const命令中我们对ES6的相关语法已经有了初步了解,上一章中我们主要学习了三大部分的内容,let命令的使用,块级作用域,const命令的使用,那么从本篇博客将进 ...
- ECMA Script 6_解构赋值_模式匹配
解构赋值 从数组中提取值,按照对应位置,对变量赋值 只要等号右边的值不是对象或数组,就先将其转为对象. 由于 undefined 和 null 无法转为对象,所以对它们进行解构赋值,都会报错 let ...
- ECMAScript6 入门教程记录 变量的解构赋值
(1)变量的解构赋值 基本用法:ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). let a = 1; let b = 2; let c = ...
随机推荐
- .NET Core在安装(VS2015)与部署
.NET Core开发环境搭建 使用VS2015开发.NET Core项目,环境的搭建可以参考官网,大致安装步骤如下: 1.首先你得装个vs2015 并且保证已经升级至 update3及以上,下载链接 ...
- 【loj6142】「2017 山东三轮集训 Day6」A 结论题+Lucas定理
题解: 当奇数 发现答案就是C(n,1)^2+C(n,3)^2+...C(n,n)^2 倒序相加,发现就是C(2n,n) 所以答案就是C(2n,n)/2 当偶数 好像并不会证 打表出来可以得到 2.当 ...
- Python 类的内置方法
#!/usr/bin/env python # -*- coding:utf-8 -*- # 作者:Presley # 邮箱:1209989516@qq.com # 时间:2018-11-04 # p ...
- Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第二集之新建虚拟机】
1, 2, 3, 4,(如果选择版本时,发现选项中没有centos,可以选择other linux2.6.x kernel) 5,(虚拟机命名:Centos_用途_IP) 6,(选择Split vir ...
- 028 IDEA中下载与上传程序
在学习的时候,更多的时候在使用eclipse,但是在使用过程中,IDEA有时候使用起来更加方便轻松. 关于,在使用过程中的一些常识,这里谢谢写写文档. 一:拉代码 1.说明 在第一次开始项目的时候,需 ...
- 五种UML工具
ProcessOn是一款在线流程图软件(https://www.processon.com/),能够高效的完成在线流程图.UI原型图.UML以及组织图,网络拓扑图的构建.该软件最大的特点是,无需安装, ...
- oracle获取某个月份的最后一天
select last_day(to_date('1992-10','yyyy-mm')) from dual; 输出:1992/10/31
- hdu 2181 哈密顿绕行世界问题【DFS】
题目链接 题目大意: Problem Description 一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市. Input ...
- DNS信息收集工具dig使用
Dig是域信息搜索器的简称(Domain Information Groper),使用dig命令可以执行查询域名相关的任务 常见域名记录: A(主机记录 把一个域名解析成IP地址) C name(别名 ...
- 003.MMM双主-双从读写分离部署
一 前期规划 1.1 主机规划 1.2 虚拟IP规划 1.3 用户列表 提示:以上角色需要在所有节点添加. 1.4 整体架构 1.4 hosts修改 1 [root@localhost ~]# vi ...