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 相关文章推荐
动态加载js文件 document.createElement
Oct 14 Javascript
JavaScript下申明对象的几种方法小结
Oct 02 Javascript
{}与function(){}选用空对象{}来存放keyValue
May 23 Javascript
js使用心得分享
Jan 13 Javascript
支持移动端原生js轮播图
Feb 16 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
Jul 23 Javascript
使用store来优化React组件的方法
Oct 23 Javascript
jquery写出PC端轮播图实例
Jan 26 jQuery
js使用formData实现批量上传
Mar 27 Javascript
JS阻止事件冒泡的方法详解
Aug 26 Javascript
vue组件库的在线主题编辑器的实现思路
Apr 03 Javascript
jQuery实现的上拉刷新功能组件示例
May 01 jQuery
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-cli简介(不会Shell语言一样用Shell)
2013/06/03 PHP
实例讲解php将字符串输出到HTML
2019/01/27 PHP
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
2013/04/02 Javascript
JS代码判断IE6,IE7,IE8,IE9的函数代码
2013/08/02 Javascript
jQuery计算textarea中文字数(剩余个数)的小程序
2013/11/28 Javascript
Node.js 应用跑得更快 10 个技巧
2016/04/03 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
JS获取当前使用的浏览器名字以及版本号实现方法
2016/08/19 Javascript
JavaScript实现的选择排序算法实例分析
2017/04/14 Javascript
用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)
2017/05/17 Javascript
jQuery选择器特殊字符与属性空格问题
2017/08/14 jQuery
微信小程序的tab选项卡的实现效果
2019/05/15 Javascript
node.js +mongdb实现登录功能
2020/06/18 Javascript
对vuex中store和$store的区别说明
2020/07/24 Javascript
Vuex实现简单购物车
2021/01/10 Vue.js
[03:00]《DAC最前线》之欧美新秀VS老将
2015/02/01 DOTA
Python中的魔法方法深入理解
2014/07/09 Python
python编码总结(编码类型、格式、转码)
2016/07/01 Python
Python多线程爬虫实战_爬取糗事百科段子的实例
2017/12/15 Python
Tensorflow 实现分批量读取数据
2020/01/04 Python
快速了解Python开发环境Spyder
2020/06/29 Python
CSS3的column-fill属性对齐列内容高度的用法详解
2016/07/01 HTML / CSS
美国领先的礼品卡网站:GiftCards.com
2016/11/02 全球购物
2019年Java 最常见的 面试题
2016/10/19 面试题
如何撰写岗位职责
2014/02/01 职场文书
市场部管理制度
2014/02/02 职场文书
远程培训的心得体会
2014/09/01 职场文书
缅怀先烈演讲稿
2014/09/03 职场文书
学生逃课检讨书1000字
2014/10/20 职场文书
贵阳市党的群众路线教育实践活动党(工)委领导班子整改方案
2014/10/26 职场文书
2015年班主任德育工作总结
2015/05/21 职场文书
高三物理教学反思
2016/02/20 职场文书
《走遍天下书为侣》教学反思
2016/02/22 职场文书
python模块与C和C++动态库相互调用实现过程示例
2021/11/02 Python
动画《朋友游戏》公开佐藤友生绘制的开播纪念绘
2022/04/06 日漫
Ruby序列化和持久化存储 Marshal和Pstore介绍
2022/04/18 Ruby