大致介绍

解构:就是将声明的一组变量和与相同结构的数组或者对象的元素数值一一对应,并将变量相对应元素进行赋值
数组解构
例子:
let [a,b,c] = [1,2,3]; console.log(a); //1 console.log([a,b,c]); //[1, 2, 3]
可以看到,数组中的a,b,c分别对应1,2,3
嵌套的数组也可以进行解构
let [a,[b,[c]]] = [1,[2,[3]]]; console.log(c); //3 let [d,,e] = [1,2,3]; console.log(e); //3 let [f,...tail] = [1,2,3]; console.log(tail); //[2, 3]
在解构不成功时,变量的值就是undefined
let [a,b] = [1]; console.log(b); //undefined
不完全解构也是可以的
let [a,b,c] = [1,2,3,4]; console.log(c); //3
也可以设置默认值
let [a = 1] = []; console.log(a); //1 let [b = 1] = [2]; console.log(b); //2 let [c = 1] = [undefined]; console.log(c); //1 let [d = 1] = [null]; console.log(d); //null
注意:在ES6中使用严格相等运算符(===)。所以如果默认值不严格相等undefined,默认值就不会生效。例如null
默认值也可以是表达式,但是要注意只有默认值在使用时才会触发函数(惰性求值)
function f(){
alert(1);
}
let [a = f()] = [3]; //f()不会执行
let [b = f()] = [undefined]; //会执行
对象解构
例子:
let {foo,bar} = {foo:1,bar:2};
console.log(foo); //1
注意:与数组不同,对象解构时不是根据位置对变量赋值的,而是通过变量名进行赋值,即变量名和属性名必须相等才可以进行赋值,位置不重要
let {bar,foo} = {foo:1,bar:2};
console.log(foo);//1
如果变量名和属性名不相同,则要采取下面的方法
let {first: f,last: l} = {first:1,last:3};
console.log(l); //3
意思就是先在对象中查找first属性,如果有就赋值给f,其中first是匹配的模式,而f才是真正的变量
所以对象解构的完整形式是:
let {first: first,last: last} = {first:1,last:3};
对象解构也可以进行嵌套
let obj = {
a:1,
b:[
'hello',
{c:'world'}
]
}
let {a: a,b: [h,{c:w}]} = obj;
console.log(a); //1
console.log(h); //hello
console.log(w); //world
对象解构也可以设置默认值,并且如果解构失败,变量会赋值undefined
let {x: x = 1,y: y=2,z: z=3,w: w} = {x:3,y:null,z:undefined};
console.log(x) //3
console.log(y) //null
console.log(z) //3
console.log(w) //undefined
字符串解构
字符串之所以能够解构是因为此时字符串转换成了一个数组
let [a,b,c] = 'hello'; console.log(a); //h console.log(b); //e console.log(c); //l
数值和布尔值解构
解构赋值时,如果等号右边是数值和布尔值,则会先转为对象
let {toString: s} = 123;
s === Number.prototype.toString // true
let {toString: a} = true;
a === Boolean.prototype.toString // true
上面代码中,数值和布尔值的包装对象都有tostring属性,因此变量s都能取到值。
解构赋值的规则是,只要等号右边的值不是对象或数组,就先将其转为对象。由于null和undefined无法转为对象,所以对它们进行解构赋值,都会报错。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# ecmascript6
# ECMAScript6 新特性范例大全
# ECMAScript6轮播图实践知识总结
# ECMAScript6快速入手攻略
# ECMAScript6中Map/WeakMap详解
# ECMAScript6中Set/WeakSet详解
# ECMAScript6块级作用域及新变量声明(let)
# ECMAScript6新增值比较函数Object.is
# ECMAScript6函数剩余参数(Rest Parameters)
# ECMAScript6函数默认参数
# ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
# 默认值
# 变量名
# 布尔值
# 都有
# 是因为
# 成了
# 都能
# 将其
# 要注意
# 并将
# 才可以
# 可以看到
# 不完全
# 报错
# 不重要
# 就先
# 时才
# 才是真正
# 先在
# 则会
相关文章:
如何在云主机上快速搭建多站点网站?
建站上市公司网站建设方案与SEO优化服务定制指南
如何快速辨别茅台真假?关键步骤解析
专业网站建设制作报价,网页设计制作要考什么证?
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
建站之星安装需要哪些步骤及注意事项?
如何用低价快速搭建高质量网站?
大连网站设计制作招聘信息,大连投诉网站有哪些?
再谈Python中的字符串与字符编码(推荐)
,交易猫的商品怎么发布到网站上去?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
SQL查询语句优化的实用方法总结
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
怎么将XML数据可视化 D3.js加载XML
建站主机选择指南:服务器配置与SEO优化实战技巧
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
建站之星云端配置指南:模板选择与SEO优化一键生成
建站主机解析:虚拟主机配置与服务器选择指南
javascript中的try catch异常捕获机制用法分析
如何快速查询网址的建站时间与历史轨迹?
创业网站制作流程,创业网站可靠吗?
如何用PHP工具快速搭建高效网站?
金*站制作公司有哪些,金华教育集团官网?
图册素材网站设计制作软件,图册的导出方式有几种?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
如何通过IIS搭建网站并配置访问权限?
如何选择美橙互联多站合一建站方案?
宝塔面板如何快速创建新站点?
专业网站制作服务公司,有哪些网站可以免费发布招聘信息?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
已有域名如何快速搭建专属网站?
建站之星各版本价格是多少?
音乐网站服务器如何优化API响应速度?
,巨量百应是干嘛的?
已有域名和空间,如何快速搭建网站?
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
制作网站公司那家好,网络公司是做什么的?
建站VPS选购需注意哪些关键参数?
济南专业网站制作公司,济南信息工程学校怎么样?
如何通过WDCP绑定主域名及创建子域名站点?
相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?
建站之星安装失败:服务器环境不兼容?
*服务器网站为何频现安全漏洞?
详解jQuery停止动画——stop()方法的使用
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
如何获取开源自助建站系统免费下载链接?
*请认真填写需求信息,我们会在24小时内与您取得联系。