ES6解构赋值的功能与用途实例分析


Posted in Javascript onOctober 31, 2017

本文实例讲述了ES6解构赋值的功能与用途。分享给大家供大家参考,具体如下:

(1)交换变量的值

[x, y] = [y, x];

上面代码交换变量x和y的值,这样的写法不仅简洁,而且易读,语义非常清晰。

(2)从函数返回多个值

函数只能返回一个值,如果要返回多个值,只能将它们放在数组或对象里返回。有了解构赋值,取出这些值就非常方便。

// 返回一个数组
function example() {
 return [1, 2, 3];
}
var [a, b, c] = example();
// 返回一个对象
function example() {
 return {
  foo: 1,
  bar: 2
 };
}
var { foo, bar } = example();

(3)函数参数的定义

解构赋值可以方便地将一组参数与变量名对应起来。

// 参数是一组有次序的值
function f([x, y, z]) { ... }
f([1, 2, 3]);
// 参数是一组无次序的值
function f({x, y, z}) { ... }
f({z: 3, y: 2, x: 1});

(4)提取JSON数据

解构赋值对提取JSON对象中的数据,尤其有用。

var jsonData = {
 id: 42,
 status: "OK",
 data: [867, 5309]
};
let { id, status, data: number } = jsonData;
console.log(id, status, number);
// 42, "OK", [867, 5309]

上面代码可以快速提取JSON数据的值。

(5)函数参数的默认值

jQuery.ajax = function (url, {
 async = true,
 beforeSend = function () {},
 cache = true,
 complete = function () {},
 crossDomain = false,
 global = true,
 // ... more config
}) {
 // ... do stuff
};

指定参数的默认值,就避免了在函数体内部再写

var foo = config.foo || 'default foo';

这样的语句。

(6)遍历Map结构

任何部署了Iterator接口的对象,都可以用for…of循环遍历。Map结构原生支持Iterator接口,配合变量的解构赋值,获取键名和键值就非常方便。

var map = new Map();
map.set('first', 'hello');
map.set('second', 'world');
for (let [key, value] of map) {
 console.log(key + " is " + value);
}
// first is hello
// second is world

如果只想获取键名,或者只想获取键值,可以写成下面这样。

// 获取键名
for (let [key] of map) {
 // ...
}
// 获取键值
for (let [,value] of map) {
 // ...
}

(7)输入模块的指定方法

加载模块时,往往需要指定输入那些方法。解构赋值使得输入语句非常清晰。

const { SourceMapConsumer, SourceNode } = require("source-map");

更多相关内容可查看本站专题:《ECMAScript6(ES6)入门教程》、《JavaScript数组操作技巧总结》、《JavaScript字符与字符串操作技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript错误与调试技巧总结》及《javascript面向对象入门教程》

希望本文所述对大家基于ECMAScript的程序设计有所帮助。

Javascript 相关文章推荐
jquery的extend和fn.extend的使用说明
Jan 09 Javascript
关于query Javascript CSS Selector engine
Apr 12 Javascript
jquery获取iframe中的dom对象(两种方法)
Jul 02 Javascript
jQuery获得子元素个数的方法
Apr 14 Javascript
jQuery实现列表内容的动态载入特效
Aug 08 Javascript
Node.js中看JavaScript的引用
Apr 22 Javascript
详解从零搭建 vue2 vue-router2 webpack3 工程
Nov 22 Javascript
详解微信小程序的 request 封装示例
Aug 21 Javascript
使用VUE+iView+.Net Core上传图片的方法示例
Jan 04 Javascript
详解webpack-dev-middleware 源码解读
Mar 23 Javascript
vue中使用echarts的示例
Jan 03 Vue.js
JavaScript中layim之整合右键菜单的示例代码
Feb 06 Javascript
js原生日历的实例(推荐)
Oct 31 #Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
Oct 31 #Javascript
详解RequireJs官方使用教程
Oct 31 #Javascript
React Native中导航组件react-navigation跨tab路由处理详解
Oct 31 #Javascript
ES6解构赋值实例详解
Oct 31 #Javascript
js 获取json数组里面数组的长度实例
Oct 31 #Javascript
jQuery读取本地的json文件(实例讲解)
Oct 31 #jQuery
You might like
判断是否为指定长度内字符串的php函数
2010/02/16 PHP
PHP修改session_id示例代码
2014/01/08 PHP
PHP反向代理类代码
2014/08/15 PHP
PHP文件读取功能的应用实例
2015/05/08 PHP
Mac系统下安装PHP Xdebug
2018/03/30 PHP
PHP使用PDO抽象层获取查询结果的方法示例
2018/05/10 PHP
利用javascript/jquery对上传文件格式过滤的方法
2009/07/25 Javascript
jQuery EasyUI API 中文文档 - Parser 解析器
2011/09/29 Javascript
Javascript中的getUTCHours()方法使用详解
2015/06/10 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
Javascript中的对象和原型(二)
2016/08/12 Javascript
vue2.0中vue-cli实现全选、单选计算总价格的实例代码
2017/07/18 Javascript
推荐10款扩展Web表单的JS插件
2017/12/25 Javascript
vue的全局提示框组件实例代码
2018/02/26 Javascript
node.js之基础加密算法模块crypto详解
2018/09/11 Javascript
原生JS使用Canvas实现拖拽式绘图功能
2019/06/05 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
JS获取当前时间戳方法解析
2020/08/29 Javascript
Python中的Matplotlib模块入门教程
2015/04/15 Python
学习python中matplotlib绘图设置坐标轴刻度、文本
2018/02/07 Python
python 实现对文件夹中的图像连续重命名方法
2018/10/25 Python
pandas.cut具体使用总结
2019/06/24 Python
基于python框架Scrapy爬取自己的博客内容过程详解
2019/08/05 Python
详解在python操作数据库中游标的使用方法
2019/11/12 Python
HTML5页面嵌入小程序没有返回按钮及返回页面空白的问题
2020/05/28 HTML / CSS
Staples英国官方网站:办公用品一站式采购
2017/10/06 全球购物
奇怪的鱼:Weird Fish
2018/03/18 全球购物
澳大利亚小众服装品牌:Maurie & Eve
2018/03/27 全球购物
C语言笔试题
2014/09/04 面试题
将一个文本文件的内容按倒序打印出来
2015/01/05 面试题
优秀应届生推荐信
2013/11/09 职场文书
医院合作协议书
2014/08/19 职场文书
聘任证明怎么写
2015/03/02 职场文书
2015年董事长秘书工作总结
2015/07/23 职场文书
2016十一国庆节感言
2015/12/09 职场文书
关于python类SortedList详解
2021/09/04 Python