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 相关文章推荐
关于B/S判断浏览器断开的问题讨论
Oct 29 Javascript
window.onload 加载完毕的问题及解决方案(上)
Jul 09 Javascript
javascript JSON操作入门实例
Apr 16 Javascript
基于jquery的超简单上下翻
Apr 20 Javascript
javascript Array.prototype.slice使用说明
Oct 11 Javascript
使用jQuery.fn自定义jQuery翻页插件
Jan 20 Javascript
js中生成map对象的方法
Jan 09 Javascript
Js实现网页键盘控制翻页的方法
Oct 30 Javascript
Jquery实现由下向上展开效果的例子
Dec 08 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
Dec 16 Javascript
js构建二叉树进行数值数组的去重与优化详解
Mar 26 Javascript
Vue 组件注册全解析
Dec 17 Vue.js
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
咖啡知识 咖啡养豆要养多久 排气又是什么
2021/03/06 新手入门
PHP+JS实现的商品秒杀倒计时用法示例
2016/11/15 PHP
JS跨域代码片段
2012/08/30 Javascript
js实现广告漂浮效果的小例子
2013/07/02 Javascript
nodejs事件的监听与触发的理解分析
2015/02/12 NodeJs
JavaScript之Object类型介绍
2015/04/01 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
2015/09/27 Javascript
jquery对dom节点的操作【推荐】
2016/04/15 Javascript
jQuery.Callbacks()回调函数队列用法详解
2016/06/14 Javascript
ES6中的Promise代码详解
2017/10/09 Javascript
微信小程序自定义tab实现多层tab嵌套功能
2018/06/15 Javascript
angularjs手动识别字符串中的换行符方法
2018/10/02 Javascript
javascript获取元素的计算样式
2019/05/24 Javascript
[02:42]决战东方!DOTA2亚洲邀请赛重启荣耀之争
2017/03/17 DOTA
[01:38]完美世界DOTA2联赛(PWL)宣传片:第一站
2020/10/26 DOTA
python判断字符串是否包含子字符串的方法
2015/03/24 Python
Python数字图像处理之霍夫线变换实现详解
2018/01/12 Python
Pycharm如何打断点的方法步骤
2019/06/13 Python
Django之编辑时根据条件跳转回原页面的方法
2019/08/21 Python
python+Django+pycharm+mysql 搭建首个web项目详解
2019/11/29 Python
Python数据结构dict常用操作代码实例
2020/03/12 Python
一款基于css3的列表toggle特效实例教程
2015/01/04 HTML / CSS
html5新增的定时器requestAnimationFrame实现进度条功能
2018/12/13 HTML / CSS
美国女性服饰销售网站:Nasty Gal(坏女孩)
2016/07/26 全球购物
英国领先的NHS批准的在线药店:Pharmacy2U
2017/01/06 全球购物
HEMA英国:荷兰原创设计
2018/08/28 全球购物
Linux如何压缩可执行文件
2014/03/27 面试题
企业厂务公开实施方案
2014/03/26 职场文书
团代会宣传工作方案
2014/05/08 职场文书
护林防火标语
2014/06/27 职场文书
运动会广播稿150字(9篇)
2014/09/20 职场文书
专家推荐信怎么写
2015/03/25 职场文书
签证工作证明模板
2015/06/15 职场文书
python 遍历磁盘目录的三种方法
2021/04/02 Python
MySQL 如何分析查询性能
2021/05/12 MySQL
PostgreSQL常用字符串分割函数整理汇总
2022/07/07 PostgreSQL