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 ajax获取网站Alexa排名的代码
Dec 12 Javascript
基于Jquery的文字自动截取(提供源代码)
Aug 09 Javascript
json数据的列循环示例
Sep 06 Javascript
用JS做的简单的可折叠的两级树形菜单
Sep 21 Javascript
js时间比较示例分享(日期比较)
Mar 05 Javascript
Javascript中的getUTCHours()方法使用详解
Jun 10 Javascript
AngularJS轻松实现双击排序的功能
Aug 30 Javascript
浅谈Angular的$q, defer, promise
Dec 20 Javascript
React Native如何消除启动时白屏的方法
Aug 08 Javascript
vue2.0 实现页面导航提示引导的方法
Mar 13 Javascript
vue-cli设置css不生效的解决方法
Feb 07 Javascript
原生JS实现天气预报
Jun 16 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
在Windows系统上安装PHP运行环境文字教程
2010/07/19 PHP
php递归实现无限分类生成下拉列表的函数
2010/08/08 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
2014/11/03 PHP
php简单实现查询数据库返回json数据
2015/04/16 PHP
Zend Framework教程之Zend_Config_Ini用法分析
2016/03/23 PHP
tp5框架基于ajax实现异步删除图片的方法示例
2020/02/10 PHP
JS长整型精度问题实例分析
2015/01/13 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
2016/05/25 Javascript
jQuery学习笔记——jqGrid的使用记录(实现分页、搜索功能)
2016/11/09 Javascript
详解Angularjs 自定义指令中的数据绑定
2018/07/19 Javascript
Vue常见面试题整理【值得收藏】
2018/09/20 Javascript
JavaScript中import用法总结
2019/01/20 Javascript
用JS实现选项卡
2020/03/23 Javascript
详解关于Vue单元测试的几个坑
2020/04/26 Javascript
[04:38]完美世界携手游戏风云打造 卡尔工作室饰品系统篇
2013/04/25 DOTA
[02:05]DOTA2完美大师赛趣味视频之看我表演
2017/11/18 DOTA
Python subprocess模块学习总结
2014/03/13 Python
使用PDB模式调试Python程序介绍
2015/04/05 Python
python 读取DICOM头文件的实例
2018/05/07 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
2018/07/09 Python
Python爬虫入门有哪些基础知识点
2020/06/02 Python
python中Array和DataFrame相互转换的实例讲解
2021/02/03 Python
新西兰网上购物,折扣店:BestDeals.co.nz
2019/03/20 全球购物
西雅图电动自行车公司:Rad Power Bikes
2020/02/02 全球购物
联谊活动策划书
2014/01/26 职场文书
家长给小学生的评语
2014/01/30 职场文书
中秋节主持词
2014/04/02 职场文书
英语一分钟演讲稿
2014/04/29 职场文书
工业设计专业自荐书
2014/06/05 职场文书
建筑学专业自荐书
2014/07/09 职场文书
文明好少年事迹材料
2014/08/19 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书
社区国庆节活动总结
2015/03/23 职场文书
社区党员干部承诺书
2015/05/04 职场文书
springboot如何初始化执行sql语句
2021/06/22 Java/Android
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
2022/02/12 MySQL