es6的变量解构赋值很方便,那具体有哪些用途呢?

1、变换变量的值

let n = 10;
let m = 20; [n, m] = [m, n]

这样n , m 的值 会互换, 即:n = 20, m = 10, 这种写法简洁,易读,语义清晰。

2、从函数返回多个值

函数只能返回一个值,如果要返回多个值,只能将它们放在数组或者对象里返回,有了解构赋值,取出这些值就非常方便。

// 返回一个数组
function example() {
return [1, 2, 3]
} let [a, b, c] = example() // 返回一个对象
function example() {
return {
foo: 1,
bar: 2
}
} let {foo, bar} = example()

3、函数参数的定义

解构赋值可以方便地将一组参数与变量名对应起来

// 参数是一组有次序的值
function f([x, y, z]) {
return x + y + z;
}
f([1, 2, 3]) // 参数是一组无次序的值
function f({x, y, z}) {
return x + y + z;
}
f(z: 3, x: 1, y: 2)

4、提取JSON数据

解构赋值对提取JSON对象的数据,尤其有用

let jsonData = {
id: 42,
status: 'OK',
data: [123, 456]
} let {id, status, data: number} = jsonData; console.log(id, status, number)
// 42, 'OK', [123, 456]

可以快速提取JSON数据的值

5、函数参数的默认值

jQuery.ajax = function (url, {
async = true,
beforeSend = function() {},
cache = true,
complete = function() {},
crossDomain = false,
global = true
}) { }

 6、遍历Map 结构

const map = new Map()
map.set('first', 'hello')
map.set('second', 'world')
for (let [key, value] of map) {
console.log(key + ' is ' + value;
} // 只获取键名
for (let [key] of map) {} // 只获取值
for (let [,value] of map) {}

7、 输入模块的指定方法

加载模块时,往往需要指定输入哪些方法。解构赋值使得输入语句非常清晰

const {SourceMapConsumer, SourceNode} = require('source-map')

// vue中使用解构赋值取vuex的方法
import {mapActions, mapState} from 'vuex'

es6 函数解构的用途的更多相关文章

  1. es6的解构赋值用途

    (1)交换变量的值 let x = 1; let y = 2; [x, y] = [y, x]; 上面代码交换变量x和y的值,这样的写法不仅简洁,而且易读,语义非常清晰. (2)从函数返回多个值 函数 ...

  2. ES6 -箭头函数 ,对象的函数解构

    ES6 -箭头函数: //es6 中的箭头函数和扩展 //es5的写法 // function add(a,b){ // return a + b; // } // add(1,2); //3 fun ...

  3. Es6 新增解构赋值

    1.数组的解构赋值 基本用法 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 要想实现解构,就必须是容器,或者具有可遍历的接口. 以前,为 ...

  4. ES6 之 解构赋值

    本博文配合 阮一峰 <ES6 标准入门(第3版)>一书进行简要概述 ES6 中变量的解构赋值. 数组的解构赋值 基本用法 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这 ...

  5. ES6 变量解构用法

    1.数组解构,可以设置默认值 'use strict'; let [x, y = 'b'] = ['a']; //控制台输出b console.log(y); 2.对象解构 'use strict'; ...

  6. ES6 的解构赋值前每次都创建一个对象吗?会加重 GC 的负担吗?

    本文来源于知乎上的一个提问. 为了程序的易读性,我们会使用 ES6 的解构赋值: function f({a,b}){} f({a:1,b:2}); 这个例子的函数调用中,会真的产生一个对象吗?如果会 ...

  7. 深入理解ES6之解构

    变量赋值的痛 对象 let o = {a:23,b:34}; let a = o.a; let b = o.b; 如上文代码,我们经常会遇到在各种场合需要获取对象中的值的场景,舒服一点的是获取单个属性 ...

  8. ES6 对象解构

    ES6 对象解构 第一眼看到,什么鬼? const { body } = document `` 其实等于: const body = document.body ``` http://es6.rua ...

  9. es6变量解构赋值的用途

    这里是我觉得es6解构赋值,在平时我们写js的时候非常有用,而且经常用到的地方,能简化我们的代码,让写代码简介优雅易读; 用途 1.交换变量的值,太方便了这逼,写法不仅简介而且一看就明白 let [x ...

随机推荐

  1. 图论 --- BFS + MST

    Borg Maze Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7844   Accepted: 2623 Descrip ...

  2. JAVA WEB项目目录结构以及web应用部署的根目录,编译路径和项目根目录的区别

    本文链接:https://blog.csdn.net/l00149133/article/details/78984083 web应用部署的根目录,编译路径和项目的根目录有什么区别? 直接上例子: 你 ...

  3. C++ 01 基础知识点

    1.为某一特定的问题而设计的指令序列称为:程序 2.‘32位微型计算机’中的32位指的是:机器的字长 3.存储设备中,存取速度最快的是:Cache 4.指令的操作码表示的是:作何操作 5.一条指令由哪 ...

  4. laravels 使用laravel-wechat 组件

    一. laravels (5.4)使用 laravel-wechat (4.13),出现无法登陆的情况,显示没有code 错误,解决办法 前提:已经在laravels.php 的 cleaners 中 ...

  5. SpringCloud Stream使用案例

    官方定义 Spring Cloud Stream 是一个构建消息驱动微服务的框架. 应用程序通过 inputs 或者 outputs 来与 Spring Cloud Stream 中binder 交互 ...

  6. 【题解】Luogu P5470 [NOI2019]序列

    原题传送门 同步赛上我一开始想了个看似正确却漏洞百出的贪心:按\(a_i+b_i\)的和从大向小贪心 随便想想发现是假的,然后就写了个28pts的暴力dp 杜神后半程说这题就是个贪心,但我没时间写了 ...

  7. 【题解】Luogu P5468 [NOI2019]回家路线

    原题传送门 前置芝士:斜率优化 不会的可以去杜神博客学 这道题我考场上只会拆点跑最短路的70pts做法 后来回家后发现错误的爆搜都能拿满分(刀片) 还有很多人\(O(mt)\)过的,还是要坚持写正解好 ...

  8. Elasticsearch常见用法-入门

    前台启动 默认是只有本地可以访问 ./bin/elasticsearch 远程访问 修改elasticsearch.yml,把network.host(注意配置文件格式不是以 # 开头的要空一格, : ...

  9. VMwarm下安装ubuntu的一些问题

    1.终端无法输入中文的原因(未实践)  原文地址 2.Windows10下VMwarm(V15.5)和ubuntu14.04实现复制文件(已经实践)  转载路径

  10. selenium中元素操作之上传操作(六)

    上传操作分为两种情况: 1.input标签上传 如果是input可以直接输入路径的,那么直接调用send_keys输入路径,和前边的元素操作类似,在这里不再过多的赘述. 2.非input标签上传 非i ...