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 相关文章推荐
文本框回车提交与禁止提交示例
Sep 27 Javascript
node.js中的fs.chmodSync方法使用说明
Dec 18 Javascript
基于JavaScript实现生成名片、链接等二维码
Sep 20 Javascript
javascript html实现网页版日历代码
Mar 08 Javascript
jQuery表单插件ajaxForm实例详解
Jan 17 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
Apr 27 jQuery
实现Vue的markdown文档可以在线运行的方法示例
Dec 11 Javascript
ES6 更易于继承的类语法的使用
Feb 11 Javascript
Echarts动态加载多条折线图的实现代码
May 24 Javascript
解决layui富文本编辑器图片上传无法回显的问题
Sep 18 Javascript
实例讲解React 组件生命周期
Jul 08 Javascript
React Fragment介绍与使用详解
Nov 11 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
给多个地址发邮件的类
2006/10/09 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
2020/04/05 PHP
PHP防盗链的基本思想 防盗链的设置方法
2015/09/25 PHP
php实现的操作excel类详解
2016/01/15 PHP
Laravel框架FormRequest中重写错误处理的方法
2019/02/18 PHP
jquery 插件 人性化的消息显示
2008/01/21 Javascript
JS面向对象、prototype、call()、apply()
2009/05/14 Javascript
js身份证判断方法支持15位和18位
2014/03/18 Javascript
Extjs Label的 fieldLabel和html属性值对齐的方法
2014/06/15 Javascript
探讨js字符串数组拼接的性能问题
2014/10/11 Javascript
javascript使用正则表达式检测IP地址
2014/12/03 Javascript
JavaScript语言精粹经典实例(整理篇)
2016/06/07 Javascript
jquery.validate[.unobtrusive]和Bootstrap实现tooltip错误提示问题分析
2016/10/30 Javascript
浅谈node中的exports与module.exports的关系
2017/08/01 Javascript
浅析微信小程序modal弹窗关闭默认会执行cancel问题
2019/10/14 Javascript
Python编写百度贴吧的简单爬虫
2015/04/02 Python
Python中元组,列表,字典的区别
2017/05/21 Python
python连接数据库的方法
2017/10/19 Python
python的exec、eval使用分析
2017/12/11 Python
python2.7实现邮件发送功能
2018/12/12 Python
python 获取url中的参数列表实例
2018/12/18 Python
python正则表达式匹配[]中间为任意字符的实例
2018/12/25 Python
Python中常用的8种字符串操作方法
2019/05/06 Python
使用matlab或python将txt文件转为excel表格
2019/11/01 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
2020/05/09 Python
Python如何测试stdout输出
2020/08/10 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
2020/10/20 Python
税务干部鉴定材料
2014/02/11 职场文书
文明寄语大全
2014/04/11 职场文书
战略合作协议书范本
2014/04/18 职场文书
计算机应用专业自荐信
2014/07/05 职场文书
党的群众路线对照检查材料思想汇报(学校)
2014/10/04 职场文书
春秋淹城导游词
2015/02/11 职场文书
聘用合同范本
2015/09/21 职场文书
英语版自我评价,35句话轻松搞定
2019/10/08 职场文书
一行代码python实现文件共享服务器
2021/04/22 Python