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 在光标定位的地方插入文字的插件
May 10 Javascript
JavaScript提高性能知识点汇总
Jan 15 Javascript
jQuery+css实现炫目的动态块漂移效果
Jan 28 Javascript
用NODE.JS中的流编写工具是要注意的事项
Mar 01 Javascript
深入理解JavaScript函数参数(推荐)
Jul 26 Javascript
浅谈js中调用函数时加不加括号的问题
Jul 28 Javascript
基于vue的下拉刷新指令和滚动刷新指令
Dec 23 Javascript
angular2+node.js express打包部署的实战
Jul 27 Javascript
bootstrap-table实现服务器分页的示例 (spring 后台)
Sep 01 Javascript
vue v-for直接循环数字实例
Nov 07 Javascript
详解小程序如何动态绑定点击的执行方法
Nov 26 Javascript
移动端JS实现拖拽两种方法解析
Oct 12 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
[FAQ]PHP中的一些常识:类篇
2006/10/09 PHP
JQuery获取浏览器窗口内容部分高度的代码
2012/02/24 Javascript
分享Javascript中最常用的55个经典小技巧
2013/11/29 Javascript
jQuery实现跨域iframe接口方法调用
2015/03/14 Javascript
AngularJS中处理多个promise的方式
2016/02/02 Javascript
Bootstrap Scrollspy源码学习
2017/03/02 Javascript
jQuery实现简单的手风琴效果
2020/04/17 jQuery
基于vue组件实现猜数字游戏
2020/05/28 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
解决js ajax同步请求造成浏览器假死的问题
2018/01/18 Javascript
angular4 JavaScript内存溢出问题
2018/03/06 Javascript
详解vuex中mapState,mapGetters,mapMutations,mapActions的作用
2018/04/13 Javascript
angularJs在多个控制器中共享服务数据的方法
2018/09/30 Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
2019/07/25 Javascript
在Vue中使用this.$store或者是$route一直报错的解决
2019/11/08 Javascript
JSONObject与JSONArray使用方法解析
2020/09/28 Javascript
[01:01:13]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第三场
2018/04/06 DOTA
Python使用Matplotlib实现Logos设计代码
2017/12/25 Python
Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法
2018/04/19 Python
python 2.7.13 安装配置方法图文教程
2018/09/18 Python
pandas删除指定行详解
2019/04/04 Python
在cmd中查看python的安装路径方法
2019/07/03 Python
Django之模板层的实现代码
2019/09/09 Python
Python定义函数实现累计求和操作
2020/05/03 Python
翻转数列python实现,求前n项和,并能输出整个数列的案例
2020/05/03 Python
你应该知道的30个css选择器
2014/03/19 HTML / CSS
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
FC-Moto西班牙:摩托车手最大的购物场所之一
2019/04/11 全球购物
数据库方面面试题
2012/04/22 面试题
不打扫卫生检讨书
2014/02/12 职场文书
动员大会主持词
2014/03/20 职场文书
公司保密承诺书
2014/03/27 职场文书
《雨点儿》教学反思
2014/04/14 职场文书
医生个人自我剖析材料
2014/10/08 职场文书
学生个人总结范文
2015/02/15 职场文书
Python+Pillow+Pytesseract实现验证码识别
2022/05/11 Python