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 幻灯片插件(带缩略图功能)
Jan 24 Javascript
打印json对象的内容及JSON.stringify函数应用
Mar 29 Javascript
PHP开发者必须掌握的6个关键字
Apr 14 Javascript
javascript实现无限级select联动菜单
Jan 02 Javascript
javascript实现模拟时钟的方法
May 13 Javascript
Javascript实现Array和String互转换的方法
Dec 21 Javascript
AngularJS入门教程之路由与多视图详解
Aug 19 Javascript
vue对storejs获取的数据进行处理时遇到的几种问题小结
Mar 20 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
Jul 11 Javascript
jQuery实现的中英文切换功能示例
Jan 11 jQuery
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
Oct 10 jQuery
如何在 ant 的table中实现图片的渲染操作
Oct 28 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初学者头疼问题总结
2006/10/09 PHP
php实现的遍历文件夹下所有文件,编辑删除
2010/01/05 PHP
PHP写的求多项式导数的函数代码
2012/07/04 PHP
php获取系统变量方法小结
2015/05/29 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
cookie的复制与使用记住用户名实现代码
2013/11/04 Javascript
javascript制作loading动画效果 loading效果
2014/01/14 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
2015/03/11 Javascript
基于jquery ui的alert,confirm方案(支持换肤)
2015/04/03 Javascript
对于jQuery性能的一些优化建议
2015/08/13 Javascript
javascript闭包概念简单解析(推荐)
2016/06/03 Javascript
JS版微信6.0分享接口用法分析
2016/10/13 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
jQuery实现的文字逐行向上间歇滚动效果示例
2017/09/06 jQuery
解决option标签selected="selected"属性失效的问题
2017/11/06 Javascript
js中document.write和document.writeln的区别
2018/03/11 Javascript
详解webpack打包后如何调试的方法步骤
2018/11/07 Javascript
vuedraggable+element ui实现页面控件拖拽排序效果
2020/07/29 Javascript
React性能优化系列之减少props改变的实现方法
2019/01/17 Javascript
JavaScript之解构赋值的理解
2019/01/30 Javascript
vue项目首屏打开速度慢的解决方法
2019/03/31 Javascript
JavaScript遍历数组和对象的元素简单操作示例
2019/07/09 Javascript
[01:02:55]CHAOS vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Django中URLconf和include()的协同工作方法
2015/07/20 Python
python分割列表(list)的方法示例
2017/05/07 Python
python3 pillow生成简单验证码图片的示例
2017/09/19 Python
python内置函数:lambda、map、filter简单介绍
2017/11/16 Python
Python实现加载及解析properties配置文件的方法
2018/03/29 Python
python实现集中式的病毒扫描功能详解
2019/07/09 Python
pandas 对group进行聚合的例子
2019/12/27 Python
Python阶乘求和的代码详解
2020/02/14 Python
Python实现寻找回文数字过程解析
2020/06/09 Python
承诺书怎么写
2014/03/26 职场文书
个人专业技术总结
2015/03/05 职场文书
python 实现图片特效处理
2022/04/03 Python