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 相关文章推荐
javascript中replace( )方法的使用
Apr 24 Javascript
JS实现合并两个数组并去除重复项只留一个的方法
Dec 17 Javascript
JS表单验证的代码(常用)
Apr 08 Javascript
原生js实现百叶窗效果及原理介绍
Apr 12 Javascript
jQuery 特性操作详解及实例代码
Sep 29 Javascript
JavaScript 动态三角函数实例详解
Jan 08 Javascript
Angular.JS去掉访问路径URL中的#号详解
Mar 30 Javascript
利用Javascript开发一个二维周视图日历
Dec 14 Javascript
JavaScript模板引擎应用场景及实现原理详解
Dec 14 Javascript
关于Layui Table隐藏列问题
Sep 16 Javascript
刷新页面后让控制台的js代码继续执行
Sep 20 Javascript
vue elementui tree 任意级别拖拽功能代码
Aug 31 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版(5)
2006/10/09 PHP
php Undefined index的问题
2009/06/01 PHP
PHP以及MYSQL日期比较方法
2012/11/29 PHP
PHP简单生成缩略图相册的方法
2015/07/29 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
2015/12/18 PHP
PHP如何通过带尾指针的链表实现'队列'
2020/10/22 PHP
JS 获取span标签中的值的代码 支持ie与firefox
2009/08/24 Javascript
JavaScript 原型学习总结
2010/10/29 Javascript
JS中的异常处理方法分享
2013/12/22 Javascript
javascript中 try catch用法
2015/08/16 Javascript
jquery ui dialog替代confirm实例分析
2016/01/25 Javascript
jquery遍历table的tr获取td的值实现方法
2016/05/19 Javascript
nodejs加密Crypto的实例代码
2016/07/07 NodeJs
jQuery事件详解
2017/02/23 Javascript
面试题:react和vue的区别分析
2019/04/08 Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
2019/10/23 Javascript
微信小程序接入腾讯云验证码的方法步骤
2020/01/07 Javascript
js实现微信聊天效果
2020/08/09 Javascript
[02:51]DOTA2英雄基础教程 艾欧
2014/01/13 DOTA
使用grappelli为django admin后台添加模板
2014/11/18 Python
python僵尸进程产生的原因
2017/07/21 Python
遗传算法python版
2018/03/19 Python
Python中.join()和os.path.join()两个函数的用法详解
2018/06/11 Python
Python 打印中文字符的三种方法
2018/08/14 Python
python实现遍历文件夹修改文件后缀
2018/08/28 Python
如何使用python进行pdf文件分割
2019/11/11 Python
Python如何批量获取文件夹的大小并保存
2020/03/31 Python
Python3自定义json逐层解析器代码
2020/05/11 Python
Python类成员继承重写的实现
2020/09/16 Python
python利用opencv保存、播放视频
2020/11/02 Python
打架检讨书800字
2014/01/10 职场文书
12.4法制宣传日活动总结
2014/08/26 职场文书
医生个人自我剖析材料
2014/10/08 职场文书
廉洁自律个人总结
2015/02/14 职场文书
班级管理经验交流材料
2015/11/02 职场文书
node.js如何自定义实现一个EventEmitter
2021/07/16 Javascript