ES6的解构赋值实例详解


Posted in Javascript onMay 06, 2019

1 什么是解构赋值

解构赋值允许你使用类似数组或对象字面量的语法将数组和对象的属性赋给各种变量。这种赋值语法极度简洁,同时还比传统的属性访问方法更为清晰。解构会仅提取出一个大对象中的部分成员来单独使用。

如下是传统的:

var y=data[0]
var m=data[1]
var d=data[2]

但在ES6中可以简写为:

var [y,m,d]=date;

2 数组与对象的解构

数组解构赋值语法的一般形式为:

 [ variable1, variable2, ..., variableN ] = array;

这将为variable1到variableN的变量赋予数组中相应元素项的值。如果你想在赋值的同时声明变量,可在赋值语句前加入var、let或const关键字

对象的解构类似,如下所示:

var user={
  uid:1001,
  uname:"dingding",
  set:1,
  signin:function(){
   console.log("登录...");
  },
  signout:function(){
   console.log("注销...");
  },
  signup:function(){
   console.log("注册...");
  }
}
//var {uid:uid,signup:signup}=user;//简写如下
var {uid,signup}=user;
console.log(uid);
signup();

对象解构的一个特殊用法是参数结构,在向函数中传参时,将一个大的对象,打散后,传递给对应的形参变量,有效解决了传参时有多个形参不确定但又要求按顺序传入的需求

//1. 定义形参列表时,就用对象结构定义
function ajax({
 //与顺序无关
 url,
 type,
 data,//不确定
 dataType,//不确定
}){
   console.log(`向${url}发送${type}请求`);
   if(data!=undefined&&type=="get"){
    console.log(`在url结尾拼接参数?${data}`)
   }
   if(data!=undefined&&type=="post"){
    console.log(`xhr.send(${data})`);
   }
   if(dataType=="json"){
    console.log(`JSON.parse(返回结果)`);
   }
}
//2. 调用函数传参时,所有实参值,都要放在一个对象结构中整体传入。
ajax({
  url:"http://localhost:3000/products/getProductsByKwords",
  type:"get",
  data:"kw=macbook i5",
  dataType:"json"
});

使用解构很方便,但它强调对应关系,数组解构:下标对下标,对象解构:属性对属性,但允许元素或者参数为空,例如下面三种写法:

var [y,,]=date;
var [y,,d]=date;
var [,m,]=date;

虽然有不同位置的元素为空,但是依然可以正常执行赋值操作,不过和传统方法一样,为空的在用时会按undefined处理。

总结

以上所述是小编给大家介绍的ES6的解构赋值,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
[原创]保存的js无法执行的解决办法
Feb 25 Javascript
jquery教程ajax请求json数据示例
Jan 13 Javascript
jquery datepicker参数介绍和示例
Apr 15 Javascript
js 弹出新页面避免被浏览器、ad拦截的一种新方法
Apr 30 Javascript
深入学习JavaScript中的Rest参数和参数默认值
Jul 28 Javascript
JSONP基础知识详解
Mar 19 Javascript
基于JavaScript实现的顺序查找算法示例
Apr 14 Javascript
基于Vue的文字跑马灯组件(npm 组件包)
May 24 Javascript
Angularjs的启动过程分析
Jul 18 Javascript
jsonp格式前端发送和后台接受写法的代码详解
Nov 07 Javascript
JS组件库AlloyTouch实现图片轮播过程解析
May 29 Javascript
详解vue身份认证管理和租户管理
May 25 Vue.js
3分钟读懂移动端rem使用方法(推荐)
May 06 #Javascript
Vue动态组件和异步组件原理详解
May 06 #Javascript
微信小程序按钮点击跳转页面详解
May 06 #Javascript
详解vue中移动端自适应方案
May 05 #Javascript
解决ie11 SCRIPT5011:不能执行已释放Script的代码问题
May 05 #Javascript
彻底揭秘keep-alive原理(小结)
May 05 #Javascript
angular4+百分比进度显示插件用法示例
May 05 #Javascript
You might like
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
2018/12/07 PHP
PHP操作路由器实现方法示例
2019/04/27 PHP
JavaScript Cookie的读取和写入函数
2009/12/08 Javascript
JS中setInterval、setTimeout不能传递带参数的函数的解决方案
2013/04/28 Javascript
JS+CSS 制作的超级简单的下拉菜单附图
2013/11/22 Javascript
使用iframe window的scroll方法控制iframe页面滚动
2014/03/05 Javascript
Node.js 去掉种子(torrent)文件里的邪恶信息
2015/03/27 Javascript
javascript截取字符串小结
2015/04/28 Javascript
浅谈jQuery中setInterval()方法
2015/07/07 Javascript
使用堆实现Top K算法(JS实现)
2015/12/25 Javascript
AngularJS上拉加载问题解决方法
2016/05/23 Javascript
JS实现刷新父页面不弹出提示框的方法
2016/06/22 Javascript
jQuery中get方法用法分析
2016/12/07 Javascript
js实现适合新闻类图片的轮播效果
2017/02/05 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
详解node单线程实现高并发原理与node异步I/O
2017/09/21 Javascript
纯JS实现出生日期[年月日]下拉菜单效果
2018/06/01 Javascript
微信小程序实现banner图轮播效果
2020/06/28 Javascript
Vuex mutitons和actions初使用详解
2019/03/04 Javascript
vue轮播组件实现$children和$parent 附带好用的gif录制工具
2019/09/26 Javascript
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
[37:45]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第二场 12.09
2020/12/11 DOTA
举例详解Python中yield生成器的用法
2015/08/05 Python
对pandas中apply函数的用法详解
2018/04/10 Python
python组合无重复三位数的实例
2018/11/13 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
2021/01/11 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
莫斯科珠宝厂官方网站:Miuz
2020/09/19 全球购物
为什么要使用servlet
2016/01/17 面试题
机械工程师求职自我评价
2013/09/23 职场文书
发布会邀请函
2015/01/31 职场文书
健康教育主题班会
2015/08/14 职场文书
导游词之四川熊猫基地
2020/01/13 职场文书
Java中常用解析工具jackson及fastjson的使用
2021/06/28 Java/Android
Java由浅入深通关抽象类与接口(下篇)
2022/04/26 Java/Android
MySQL批量更新不同表中的数据
2022/05/11 MySQL