ES6学习笔记(2)----变量的解构和赋值
参考书《ECMAScript 6入门》
http://es6.ruanyifeng.com/
变量的解构和赋值
本质上:只要模式匹配,左边的变量就能被赋予右边对应的值
原则: 解构赋值的规则是,只要等号右边的值不是对象或数组,就先将其转为对象。由于undefined和null不能转化为对象,所以如果右边是undefined或者null,则会解构报错
数组类型 :数组类型按照顺序匹配
let [x,y,z] = [1,2,3]
x = 1
y = 2
z = 3
对象类型 :对象类型按照属性名匹配
let {key1 : value1,key2 : value2} = {key2 : "v2",key1 : "v1"}
value1 = "v1"
value2 = "v2"
字符串||数字||布尔类型
let [a,b,c,d,e] = "admin"
a = 'a'
b = 'd'
c = 'm'
d = 'i'
e = 'n'
let {toLowerCase : method} = 'admin'
method = String.prototype.toLowerCase
let {toFixed : method1} = 3
method1 = Number.prototype.toFixed
let {toString : method2} = true
method2 = Boolean.prototype.toString
默认值
a.只有当右边对应的赋值严格等于undefined时,左边变量才能取默认值
b.惰性求值
c.默认值可以引用其他已经解构的变量的值
let [x = 1,y = 2] = [] //此时x的默认值是1,y的默认值是2 []等同于 [][0] = undefined,[][1] = undefined .....
let [x = 1,y = 2] = [null,null] //只有当x,y的值是undefined的时候,才能把默认值给x,y,此处null 不等于 undefined ,所以x = null, y = null
let {x = 3} = {x : undefined} // x = 3
let {x = 3} = {x : null} //x = null
function f(){
return "abc";
}
let [x = f()] = [1]
//此时x = 1,而不是会输出"abc",因为右边对应x变量的值是可以正常赋值的,所以不执行x =f()语句
let [x = 1, y = x] = [3] //x = 3,y = 3
不完全解构 : 等号左边的模式只匹配一部分等号右边的值
let [x,y] = [3] // x = 3 , y = undefined
let {k1 : a, k2 : b} = {k2 : "123"} // a = undefined, b = "123"
圆括号
允许使用 : 赋值语句的非模式部分
不允许使用
a.变量声明
b.函数参数
c.赋值语句模式
嵌套解构
数组
let [x, ...rest] = [1, 2, 3, 4];//x = 1 rest = [2,3,4]
let [x,[y,z]] = [1,[2,3]] // x = 1, y = 2, z = 3
对象
let obj = {
obj2: {
k1 : 'v1',
k2: 'v2'
}
};
let { obj2, obj2: {k1 : x, k2 : y} } = obj;
x // "v1"
y // "v2"
obj2 // {k1 : 'v1', k2 : 'v2'}
ES6学习笔记(2)----变量的解构和赋值的更多相关文章
- ES6学习笔记之变量的解构赋值
变量的解构赋值 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构. 数组的解构赋值 以前,为变量赋值,只能直接指定值: 1 2 3 var a = 1; var b = 2; ...
- ES6学习 第二章 变量的解构赋值
前言 该篇笔记是第二篇 变量的解构赋值. 这一章原文链接: 变量的解构赋值 解构赋值 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 解构 ...
- ES6 学习笔记(二)解构赋值
一.数组的解构赋值 1.基本用法 ES6允许按照一定模式从数组和对象中提取值,然后对变量进行赋值,该操作即为解构 如: let [a,b,c]=[1,2,3]; console.log(a,b,c) ...
- es6学习2:变量的解构赋值
一:数组的解构赋值 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构 let [foo, [[bar], baz]] = [1, [[2], 3]]; foo bar ba ...
- ES6学习笔记(4)- 解构
一.解构的意义 二.对象解构 三.数组解构
- ES6学习笔记(二)变量的解构与赋值
1.数组的解构赋值 1.1基本用法 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 以前,为变量赋值,只能直接指定值. let a = 1 ...
- ES6学习----let、const、解构赋值、新增字符串、模板字符串、Symbol类型、Proxy、Set
这篇es6的学习笔记来自于表哥 表严肃,是我遇到过的讲课最通透,英文发音最好听的老师,想一起听课就去这里吧 https://biaoyansu.com/i/hzhj1206 ES6就是JS6,JS的第 ...
- ES6第三节:变量的解构赋值
ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构.下面我们看实际的例子: 一.数组解构: let [a,b,c] = [1,2,3]; console.log(a); //a ...
- ES6系列_3之变量的解构赋值
ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构. 解构有三种类型: 1.数组的解构赋值 (1)简单的数组解构 以前,我们给变量赋值是直接单个指定值,比如: let a=0; ...
随机推荐
- iOS 开发者中的个人账号与组织账号之间区别
苹果对开发者主要分为3类:个人.组织(公司.企业).教育机构.即: 1.个人(Individual) 2.组织(Organizations) 组织类又分为2个小类: (1)公司(Company) (2 ...
- mysql备份及还原
mysql怎样复制数据库?或者说,将数据库拷贝到另外一台机? 按照我的理解,复制数据库,如果是: 1.直接拷贝数据库文件,应该先停数据服务,否则拷不出来.但是,生产机器,哪能说停就停呢? 2.在线拷贝 ...
- vim记住上次编辑和浏览位置
在用户自己的目录下的.vimrc中添加, "remember last update or view postion" " Only do this part when ...
- YTU 2838: 改错题AB-装置连接
2838: 改错题AB-装置连接 时间限制: 1 Sec 内存限制: 128 MB 提交: 81 解决: 49 题目描述 注:本题只需要提交标记为修改部分之间的代码,请按照C++方式提交. 有AB ...
- HDU - 2063 过山车(最大匹配数)(模板)
1.男生女生一起坐过山车,每一排有两个座位,但是有个条件,就是每个女生必须找个男生做同伴一起(但是女生只愿意和某几个男生中的一个做同伴),求最多可以有多少对男女生组合坐上过山车. 2.二分图的最大匹配 ...
- 【USACO 2011】 道路和航线
[题目链接] 点击打开链接 [算法] SPFA + SLF / LLL 优化 [代码] #include<bits/stdc++.h> using namespace std; #defi ...
- AutoIT: 捕捉路由器登陆的小例子
$url2 = "AX.XXX.XXX.COM" $oIE = _IECreate ($url2, , , , ) Sleep() ControlSetText('[REGEXPT ...
- 客户端与服务器持续同步解析(轮询,comet,WebSocket)
在B/S模型的Web应用中,客户端常常需要保持和服务器的持续更新.这种对及时性要求比较高的应用比如:股票价格的查询,实时的商品价格,自动更新的twitter timeline以及基于浏览器的聊天系统( ...
- 【转】iOS笔记-自定义控件(OC)
原文网址:http://www.jianshu.com/p/f23862eb7b8a 导读: iOS开发中,很多时候系统提供的控件并不能很好的满足我们的需求,因此,自定义控件便成为搭建UI界面中必不可 ...
- 【转】python字符串/元组/列表/字典互转
#-*-coding:utf-8-*- #1.字典 dict = {'name': 'Zara', 'age': 7, 'class': 'First'} #字典转为字符串,返回:<type ' ...