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 相关文章推荐
JavaScript函数、方法、对象代码
Oct 29 Javascript
javascript 表单规则集合对象
Jul 21 Javascript
MooTools 1.2中的Drag.Move来实现拖放
Sep 15 Javascript
深入分析jQuery的ready函数是如何工作的(工作原理)
Dec 17 Javascript
javascript绘制漂亮的心型线效果完整实例
Feb 02 Javascript
JS实现数组去重复值的方法示例
Feb 18 Javascript
JS开发中百度地图+城市联动实现实时触发查询地址功能
Apr 13 Javascript
详解使用Vue Router导航钩子与Vuex来实现后退状态保存
Sep 11 Javascript
vue+socket.io+express+mongodb 实现简易多房间在线群聊示例
Oct 21 Javascript
vue-cli webpack 引入jquery的方法
Jan 10 jQuery
vue之debounce属性被移除及处理详解
Nov 13 Javascript
vue-cli3项目打包后自动化部署到服务器的方法
Sep 16 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 中的str_replace 函数总结
2007/04/27 PHP
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
2013/06/20 PHP
Codeigniter通过SimpleXML将xml转换成对象的方法
2015/03/19 PHP
php获取数据库结果集方法(推荐)
2017/06/01 PHP
如何在PHP中使用数组
2020/06/09 PHP
动态样式类封装JS代码
2009/09/02 Javascript
js实现连续英文字符自动换行兼容ie6 ie7和firefox
2013/09/06 Javascript
JS复制到剪贴板示例代码
2013/10/30 Javascript
JS中操作JSON总结
2020/12/06 Javascript
JS实现判断滚动条滚到页面底部并执行事件的方法
2014/12/18 Javascript
canvas压缩图片转换成base64格式输出文件流
2017/03/09 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
2017/03/19 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
2017/03/28 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
2017/11/15 Javascript
vue better-scroll插件使用详解
2018/01/25 Javascript
详解JS转换数值函数Number()、parseInt()、parseFloat()
2018/08/24 Javascript
解决jQuery使用append添加的元素事件无效的问题
2018/08/30 jQuery
Vue实现类似Spring官网图片滑动效果方法
2019/03/01 Javascript
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
Vue——解决报错 Computed property "****" was assigned to but it has no setter.
2020/12/19 Vue.js
vue+openlayers绘制省市边界线
2020/12/24 Vue.js
[03:22]DOTA2超级联赛专访单车:找到属于自己的英雄
2013/06/08 DOTA
[44:50]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第二局
2016/02/26 DOTA
Python字符转换
2008/09/06 Python
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
python SSH模块登录,远程机执行shell命令实例解析
2018/01/12 Python
Python构建图像分类识别器的方法
2019/01/12 Python
NumPy 数组使用大全
2019/04/25 Python
python+selenium 鼠标事件操作方法
2019/08/24 Python
Python return语句如何实现结果返回调用
2020/10/15 Python
Pycharm plot独立窗口显示的操作
2020/12/11 Python
Python 随机按键模拟2小时
2020/12/30 Python
Python实现邮件发送的详细设置方法(遇到问题)
2021/01/18 Python
详解css3使用transform出现字体模糊的解决办法
2020/10/16 HTML / CSS
董事长致辞
2015/07/29 职场文书