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 相关文章推荐
tagName的使用,留一笔
Jun 26 Javascript
如何在Mozilla Gecko 用Javascript加载XSL
Jan 09 Javascript
syntaxhighlighter 使用方法
Jul 02 Javascript
javascript中处理时间戳为日期格式的方法
Jan 02 Javascript
jQuery实现html元素拖拽
Jul 21 Javascript
jQuery 限制输入字符串长度
Jun 20 Javascript
AngularJS中的DOM操作用法分析
Nov 04 Javascript
ES6深入理解之“let”能替代”var“吗?
Jun 28 Javascript
基于IView中on-change属性的使用详解
Mar 15 Javascript
Vue触发隐藏input file的方法实例详解
Aug 14 Javascript
微信小程序实现一个简单swiper代码实例
Dec 30 Javascript
原生JS运动实现轮播图
Jan 02 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+Html+缓存
2006/11/25 PHP
Php Ctemplate引擎开发相关内容
2012/03/03 PHP
php判断页面是否是微信打开的示例(微信打开网页)
2014/04/25 PHP
thinkphp模板输出技巧汇总
2014/11/24 PHP
在laravel中使用Symfony的Crawler组件分析HTML
2017/06/19 PHP
Laravel框架实现即点即改功能的方法分析
2019/10/31 PHP
用tip解决Ext列宽度不够的问题
2008/12/13 Javascript
JavaScript中Date.toSource()方法的使用教程
2015/06/12 Javascript
jQuery实现平滑滚动的标签分栏切换效果
2015/08/28 Javascript
jQuery Easyui实现左右布局
2016/01/26 Javascript
jQuery Ajax 实例代码 ($.ajax、$.post、$.get)
2016/04/29 Javascript
Bootstrap 附加导航(Affix)插件实例详解
2016/06/01 Javascript
每日十条JavaScript经验技巧(一)
2016/06/23 Javascript
JS数组排序方法实例分析
2016/12/16 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
完美实现js选项卡切换效果(一)
2017/03/08 Javascript
vue实现todolist单页面应用
2017/04/11 Javascript
浅谈JS函数节流防抖
2017/10/18 Javascript
vue异步axios获取的数据渲染到页面的方法
2018/08/09 Javascript
js中的闭包实例展示
2018/11/01 Javascript
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
vue组件中实现嵌套子组件案例
2020/08/31 Javascript
[43:51]2014 DOTA2国际邀请赛中国区预选赛 Dream Times VS TongFu
2014/05/22 DOTA
举例讲解Python中的迭代器、生成器与列表解析用法
2016/03/20 Python
tensorflow 只恢复部分模型参数的实例
2020/01/06 Python
解决python 虚拟环境删除包无法加载的问题
2020/07/13 Python
New Balance英国官方网站:始于1906年,百年慢跑品牌
2016/12/07 全球购物
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
西班牙在线宠物食品和配件商店:bitiba
2019/10/11 全球购物
临床医学大学生求职信
2013/09/28 职场文书
歌颂祖国的演讲稿
2014/05/04 职场文书
继承权公证书范本
2015/01/23 职场文书
2015年生产部工作总结范文
2015/05/25 职场文书
django上传文件的三种方式
2021/04/29 Python
pytorch 带batch的tensor类型图像显示操作
2021/05/20 Python
如何用Laravel包含你自己的帮助函数
2021/05/27 PHP