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 相关文章推荐
IE 缓存策略的BUG的解决方法
Jul 21 Javascript
js类后台管理菜单类-MenuSwitch
Sep 12 Javascript
JavaScript解析URL参数示例代码
Aug 12 Javascript
js实现回放拖拽轨迹从过程上进行分析
Jun 26 Javascript
JS实现响应鼠标点击动画渐变弹出层效果代码
Mar 25 Javascript
jQuery学习心得总结(必看篇)
Jun 10 Javascript
AngularJS入门教程中SQL实例详解
Jul 27 Javascript
JavaScript 实现的checkbox经典实例分享
Oct 16 Javascript
JavaScript实现获取用户单击body中所有A标签内容的方法
Jun 05 Javascript
基于JavaScript实现数码时钟效果
Mar 30 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
Feb 21 Javascript
JavaScript实现简易计算器小功能
Oct 22 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结合飞信 免费天气预报短信
2009/05/07 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
2013/07/03 PHP
php常用的url处理函数总结
2014/11/19 PHP
CodeIgniter表单验证方法实例详解
2016/03/03 PHP
PHP类相关知识点实例总结
2016/09/28 PHP
thinkPHP框架整合tcpdf插件操作示例
2018/08/07 PHP
推荐10个超棒的jQuery工具提示插件
2011/10/11 Javascript
js arguments对象应用介绍
2012/11/28 Javascript
Javascript this 关键字 详解
2014/10/22 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
2016/03/04 Javascript
浅谈js中test()函数在正则中的使用
2016/08/19 Javascript
基于bootstrap风格的弹框插件
2016/12/28 Javascript
微信小程序的分类页面制作
2017/06/27 Javascript
详解vue express启动数据服务
2017/07/05 Javascript
使用Vue构建可重用的分页组件
2018/03/26 Javascript
Vue路由history模式解决404问题的几种方法
2018/09/29 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
vue+element-ui+axios实现图片上传
2019/08/20 Javascript
详解React路由传参方法汇总记录
2020/11/29 Javascript
[05:29]2014DOTA2国际邀请赛 赛后专访:LGDNewbee顺利过关
2014/07/13 DOTA
Python通过future处理并发问题
2017/10/17 Python
django使用django-apscheduler 实现定时任务的例子
2019/07/20 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
Python加速程序运行的方法
2020/07/29 Python
python中逻辑与或(and、or)和按位与或异或(&、|、^)区别
2020/08/05 Python
五个2015 年最佳HTML5 框架
2015/11/11 HTML / CSS
HTML5 实现图片上传预处理功能
2020/02/06 HTML / CSS
英国领先的鞋类零售商:Shoe Zone
2018/12/13 全球购物
《爱如茉莉》教后反思
2014/04/12 职场文书
个园导游词
2015/02/04 职场文书
开票员岗位职责
2015/02/12 职场文书
关于调整工作时间的通知
2015/04/24 职场文书
2015年小学体育教师工作总结
2015/10/23 职场文书
MySQL EXPLAIN输出列的详细解释
2021/05/12 MySQL
用Python创建简易网站图文教程
2021/06/11 Python
springboot项目以jar包运行的操作方法
2021/06/30 Java/Android