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 相关文章推荐
解析arp病毒背后利用的Javascript技术附解密方法
Aug 06 Javascript
jQuery判断元素是否是隐藏的代码
Apr 24 Javascript
ASP.NET jQuery 实例16 通过控件CustomValidator验证RadioButtonList
Feb 03 Javascript
网页下载文件期间如何防止用户对网页进行其他操作
Jun 27 Javascript
easyui tree带checkbox实现单选的简单实例
Nov 07 Javascript
Web前端框架Angular4.0.0 正式版发布
Mar 28 Javascript
浅谈对Angular中的生命周期钩子的理解
Jul 31 Javascript
React教程之Props验证的具体用法(Props Validation)
Sep 04 Javascript
vue中实现移动端的scroll滚动方法
Mar 03 Javascript
详解@Vue/Cli 3 Invalid Host header 错误解决办法
Jan 02 Javascript
js实现删除li标签一行内容
Apr 16 Javascript
vue如何限制只能输入正负数及小数
Jul 04 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 8小时时间差的解决方法小结
2009/12/22 PHP
PHP实现删除字符串中任何字符的函数
2015/08/11 PHP
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
2018/12/07 PHP
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
jquery 使用点滴函数代码
2011/05/20 Javascript
JavaScript判断变量是否为undefined的两种写法区别
2013/12/04 Javascript
jquery移除、绑定、触发元素事件使用示例详解
2014/04/10 Javascript
jQuery实现的图片分组切换焦点图插件
2015/01/06 Javascript
简述JavaScript对传统文档对象模型的支持
2015/06/16 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
搞定immutable.js详细说明
2016/05/02 Javascript
springMVC结合AjaxForm上传文件
2016/07/12 Javascript
CSS3 media queries结合jQuery实现响应式导航
2016/09/30 Javascript
Bootstrap基本插件学习笔记之Tooltip提示工具(18)
2016/12/08 Javascript
javascript ES6中箭头函数注意细节小结
2017/02/17 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
基于layui的下拉列表的数据回显方法
2019/09/24 Javascript
JS实现横向轮播图(中级版)
2020/01/18 Javascript
微信小程序调用后台service教程详解
2020/11/06 Javascript
Nodejs实现微信分账的示例代码
2021/01/19 NodeJs
Python ORM框架SQLAlchemy学习笔记之关系映射实例
2014/06/10 Python
python数据类型_字符串常用操作(详解)
2017/05/30 Python
pytorch训练imagenet分类的方法
2018/07/27 Python
Python Web版语音合成实例详解
2019/07/16 Python
Django之创建引擎索引报错及解决详解
2019/07/17 Python
python Elasticsearch索引建立和数据的上传详解
2019/08/04 Python
pandas数据拼接的实现示例
2020/04/16 Python
Python Json数据文件操作原理解析
2020/05/09 Python
Orlebar Brown官网:设计师泳裤和泳装
2020/12/08 全球购物
做人民满意的公务员活动方案
2014/08/25 职场文书
学雷锋的心得体会
2014/09/04 职场文书
万里长城导游词
2015/01/30 职场文书
导游词之晋城蟒河
2019/12/12 职场文书
浅谈Python 中的复数问题
2021/05/19 Python
springboot layui hutool Excel导入的实现
2022/03/31 Java/Android