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 相关文章推荐
jquery之Document元素选择器篇
Aug 14 Javascript
Javascript Math ceil()、floor()、round()三个函数的区别
Mar 09 Javascript
自己动手制作jquery插件之自动添加删除行功能介绍
Oct 14 Javascript
javascript简单实现表格行间隔显示颜色并高亮显示
Nov 29 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
Apr 17 Javascript
node.js 中国天气预报 简单实现
Jun 06 Javascript
JS获取字符串实际长度(包含汉字)的简单方法
Aug 11 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
Jun 13 Javascript
js实现城市级联菜单的2种方法
Jun 23 Javascript
详解如何使用router-link对象方式传递参数?
May 02 Javascript
在vue中使用echarts(折线图的demo,markline用法)
Jul 20 Javascript
JavaScript常用8种数组去重代码实例
Sep 09 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
PHP4和PHP5共存于一系统
2006/11/17 PHP
php桌面中心(二) 数据库写入
2007/03/11 PHP
收藏的一个php小偷的核心程序
2007/04/09 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
2013/07/01 PHP
php递归删除目录下的文件但保留的实例分享
2014/05/10 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
2016/07/14 PHP
php函数mkdir实现递归创建层级目录
2016/10/27 PHP
在IE模态窗口中自由查看HTML源码的方法
2007/03/08 Javascript
提取jquery的ready()方法单独使用示例
2014/03/25 Javascript
Javascript中封装window.open解决不兼容问题
2014/09/28 Javascript
JQuery选择器、过滤器大整理
2015/05/26 Javascript
js实现获取div坐标的方法
2015/11/16 Javascript
一些实用性较高的js方法
2016/04/19 Javascript
jQuery Mobile页面返回不需要重新get
2016/04/26 Javascript
使用UrlConnection实现后台模拟http请求的简单实例
2017/01/04 Javascript
深入理解AngularJS中的ng-bind-html指令
2017/03/27 Javascript
详解wepy开发小程序踩过的坑(小结)
2019/05/22 Javascript
Vue 3自定义指令开发的相关总结
2021/01/29 Vue.js
使用相同的Apache实例来运行Django和Media文件
2015/07/22 Python
Python匹配中文的正则表达式
2016/05/11 Python
Python算法之图的遍历
2017/11/16 Python
详解python tkinter教程-事件绑定
2019/03/28 Python
numpy.where() 用法详解
2019/05/27 Python
pyqt5 实现在别的窗口弹出进度条
2019/06/18 Python
CSS3实现水平居中、垂直居中、水平垂直居中的实例代码
2020/02/27 HTML / CSS
巴西最大的体育用品商城:Netshoes巴西
2016/11/29 全球购物
Hush Puppies澳大利亚官网:舒适的男女休闲和正装鞋
2019/08/24 全球购物
机械设计制造专业个人求职信
2013/09/25 职场文书
优秀班集体申报材料
2014/12/25 职场文书
幼儿园小班家长评语
2014/12/30 职场文书
安全生产感想
2015/08/07 职场文书
餐厅营销的秘密:为什么老顾客会流水?
2019/08/08 职场文书
Python基础之元类详解
2021/04/29 Python
用Python实现一个打字速度测试工具来测试你的手速
2021/05/28 Python
python生成可执行exe控制Microsip自动填写号码并拨打功能
2021/06/21 Python
原生JavaScript实现简单五子棋游戏
2021/06/28 Javascript