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 相关文章推荐
window.parent与window.openner区别介绍
Apr 12 Javascript
js中Image对象以及对其预加载处理示例
Nov 20 Javascript
JavaScript调用ajax获取文本文件内容实现代码
Mar 28 Javascript
如何解决手机浏览器页面点击不跳转浏览器双击放大网页
Jul 01 Javascript
JavaScript递归操作实例浅析
Oct 31 Javascript
整理关于Bootstrap导航的慕课笔记
Mar 29 Javascript
详解React 服务端渲染方案完美的解决方案
Dec 14 Javascript
详解js常用分割取字符串的方法
May 15 Javascript
javascript的惯性运动实现代码实例
Sep 07 Javascript
vue接通后端api以及部署到服务器操作
Aug 13 Javascript
JS canvas实现画板和签字板功能
Feb 23 Javascript
教你部署vue项目到docker
Apr 05 Vue.js
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
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
11款新鲜的jQuery插件[附所有demo下载]
2011/01/24 Javascript
IE的有条件注释判定IE版本详解(附实例代码)
2012/01/04 Javascript
打开新窗口关闭当前页面不弹出关闭提示js代码
2013/03/18 Javascript
js showModalDialog参数的使用详解
2014/01/07 Javascript
php读取sqlite数据库入门实例代码
2014/06/25 Javascript
jQuery插件制作之全局函数用法实例
2015/06/01 Javascript
PhantomJS快速入门教程(服务器端的 JavaScript API 的 WebKit)
2015/08/06 Javascript
jquery动画效果学习笔记(8种效果)
2015/11/13 Javascript
jQuery实现宽屏图片轮播实例教程
2015/11/24 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
Extjs 点击复选框在表格中增加相关信息行
2016/07/12 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
2017/04/24 Javascript
vue 路由嵌套高亮问题的解决方法
2018/05/17 Javascript
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
2018/12/11 jQuery
jquery css实现流程进度条
2020/03/26 jQuery
python插入排序算法实例分析
2015/07/03 Python
Python处理PDF及生成多层PDF实例代码
2017/04/24 Python
python对文件目录的操作方法实例总结
2019/06/24 Python
python语言线程标准库threading.local解读总结
2019/11/10 Python
django实现web接口 python3模拟Post请求方式
2019/11/19 Python
利用python实现逐步回归
2020/02/24 Python
Selenium 滚动页面至元素可见的方法
2020/03/18 Python
DJI大疆无人机官方商城:全球领先的无人飞行器研发和生产商
2016/12/21 全球购物
Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
2015/08/04 面试题
什么是ARP(Address Resolution Protocol)地址解析协议
2013/10/31 面试题
护理毕业生自我鉴定
2014/02/11 职场文书
2014年中班元旦活动方案
2014/02/14 职场文书
装修施工安全责任书
2014/07/24 职场文书
群众路线四风自我剖析材料
2014/10/08 职场文书
长城导游词400字
2015/01/30 职场文书
交通事故代理词范文
2015/05/23 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书
离职员工给领导和同事的感谢信
2015/11/03 职场文书
公司会议开幕词
2016/03/03 职场文书
2016班级元旦联欢会开幕词
2016/03/04 职场文书