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 相关文章推荐
实现超用户体验 table排序javascript实现代码
Jun 22 Javascript
JavaScript实现维吉尼亚(Vigenere)密码算法实例
Nov 22 Javascript
JS执行删除前的判断代码
Feb 18 Javascript
js数组依据下标删除元素
Apr 14 Javascript
JavaScript使用forEach()与jQuery使用each遍历数组时return false 的区别
Aug 26 Javascript
JavaScript队列的应用实例详解【经典数据结构】
Apr 12 Javascript
jQuery实现web页面樱花坠落的特效
Jun 01 jQuery
Vue中使用vee-validate表单验证的方法
May 09 Javascript
vue 中swiper的使用教程
May 22 Javascript
react写一个select组件的实现代码
Apr 03 Javascript
解决vue项目F5刷新mounted里的函数不执行问题
Nov 05 Javascript
JavaScript实现矩形块大小任意缩放
Aug 25 Javascript
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
PHP CURL 多线程操作代码实例
2015/05/13 PHP
PHP下载远程图片并保存到本地方法总结
2016/01/22 PHP
PHP基本语法实例总结
2016/09/09 PHP
jQuery 处理表单元素的代码
2010/02/15 Javascript
js中关于String对象的replace使用详解
2011/05/24 Javascript
jquery中插件实现自动添加用户的具体代码
2013/11/15 Javascript
js获取UserControl内容为拼html时提供方便
2014/11/02 Javascript
Javascript学习指南
2014/12/01 Javascript
javascript实现table选中的行以指定颜色高亮显示的方法
2015/05/13 Javascript
jQuery寻找n以内完全数的方法
2015/06/24 Javascript
JavaScript的new date等日期函数在safari中遇到的坑
2016/10/24 Javascript
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
Vue中保存用户登录状态实例代码
2017/06/07 Javascript
javascript获取指定区间范围随机数的方法
2017/09/08 Javascript
Vue.js组件通信的几种姿势
2017/10/23 Javascript
vue 系列——vue2-webpack2框架搭建踩坑之路
2017/12/22 Javascript
Bootstrap导航菜单点击后无法自动添加active的处理方法
2018/08/10 Javascript
vue自定义js图片碎片轮播图切换效果的实现代码
2019/04/28 Javascript
Python导出数据到Excel可读取的CSV文件的方法
2015/05/12 Python
Python中函数的参数定义和可变参数用法实例分析
2015/06/04 Python
python删除不需要的python文件方法
2018/04/24 Python
浅析Python装饰器以及装饰器模式
2018/05/28 Python
python 自动去除空行的实例
2018/07/24 Python
详解Django的model查询操作与查询性能优化
2018/10/16 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
python3安装OCR识别库tesserocr过程图解
2020/04/02 Python
通过实例解析python创建进程常用方法
2020/06/19 Python
python cookie反爬处理的实现
2020/11/01 Python
罗技美国官网:Logitech美国
2020/01/22 全球购物
Linux面试题LINUX系统类
2015/11/25 面试题
应用数学专业求职信
2014/03/14 职场文书
银行求职信范文怎么写
2015/03/20 职场文书
学历证明范文
2015/06/16 职场文书
社区服务理念口号
2015/12/25 职场文书
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL
Python使用pyecharts控件绘制图表
2022/06/05 Python