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 Discuz代码中的msn聊天小功能
May 25 Javascript
javaScript 数值型和字符串型之间的转换
Jul 25 Javascript
js实现TAB切换对应不同颜色的代码
Aug 31 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
Jul 05 Javascript
基于axios封装fetch方法及调用实例
Feb 05 Javascript
jQuery实现获取form表单内容及绑定数据到form表单操作分析
Jul 03 jQuery
浅谈ng-zorro使用心得
Dec 03 Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
Dec 19 Javascript
微信小程序日历/日期选择插件使用方法详解
Dec 28 Javascript
js实现网页同时进行多个倒计时功能
Feb 25 Javascript
用VueJS写一个Chrome浏览器插件的实现方法
Feb 27 Javascript
详解a标签添加onclick事件的几种方式
Mar 29 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 代码优化之经典示例
2011/03/24 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
2011/07/03 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
2013/09/28 PHP
Nigma vs Alliance BO5 第三场2.14
2021/03/10 DOTA
slice函数的用法 之不错的应用
2006/12/29 Javascript
页面中iframe相互传值传参
2009/12/13 Javascript
jquery获取一组checkbox的值(实例代码)
2013/11/04 Javascript
把字符串按照特定的字母顺序进行排序的js代码
2014/01/28 Javascript
基于socket.io和node.js搭建即时通信系统
2014/07/30 Javascript
jQuery中toggleClass()方法用法实例
2015/01/05 Javascript
Javascript removeChild()删除节点及删除子节点的方法
2015/12/27 Javascript
Treegrid的动态加载实例代码
2016/04/29 Javascript
javascirpt实现2个iframe之间传值的方法
2016/06/30 Javascript
教你如何在Node.js中使用jQuery
2016/08/28 Javascript
详解利用exif.js解决ios手机上传竖拍照片旋转90度问题
2016/11/04 Javascript
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
详解webpack+ES6+Sass搭建多页面应用
2018/11/05 Javascript
layui实现数据表格table分页功能(ajax异步)
2019/07/27 Javascript
使用vue-cli4.0快速搭建一个项目的方法步骤
2019/12/04 Javascript
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
pandas使用get_dummies进行one-hot编码的方法
2018/07/10 Python
Django框架组成结构、基本概念与文件功能分析
2019/07/30 Python
在tensorflow中设置保存checkpoint的最大数量实例
2020/01/21 Python
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类
2012/02/06 面试题
C#和SQL Server的面试题
2016/08/12 面试题
Linux文件系统类型
2012/02/15 面试题
临床医学专业毕业生的自我评价
2013/10/17 职场文书
四年级下册教学反思
2014/02/01 职场文书
初中英语课后反思
2014/04/25 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
客户经理岗位职责大全
2015/04/09 职场文书
李强感恩观后感
2015/06/17 职场文书
狂人日记读书笔记
2015/06/30 职场文书
汉语拼音教学反思
2016/02/22 职场文书
SQLServer2019 数据库的基本使用之图形化界面操作的实现
2021/04/08 SQL Server