【ES6】变量的解构赋值

橙三吉。 提交于 2020-02-04 21:00:11

1. 数组

var [a, b, c] = [1, 2, 3];
let [a, [b], d] = [1, [2, 3], 4];

默认值生效的条件是,对象的属性值严格等于undefined。
[x, y = 'b'] = ['a', undefined]; // x='a', y='b'

2. 对象

let和const来说,变量不能重新声明,所以一旦赋值的变量以前声明过,就会报错。
var命令允许重新声明

var { foo: baz } = { foo: "aaa", bar: "bbb" };
baz // "aaa"

3. 字符串

4. 数值和布尔值

5. 函数参数

[[1, 2], [3, 4]].map(([a, b]) => a + b);
// [ 3, 7 ]

6. 圆括号

  • 不能使用圆括号的情况

a. 变量声明语句中,不能带有圆括号。

b. 函数参数中,模式不能带有圆括号。

c. 赋值语句中,不能将整个模式,或嵌套模式中的一层,放在圆括号之中。

  • 可以使用圆括号

a. 赋值语句的非模式部分,可以使用圆括号。

7. 用途

a. 交换变量的值

b. 返回多值(在 python 里面见过这个用法)

c. 定义函数参数
// 参数是一组有次序的值
function f([x, y, z]) { ... }
f([1, 2, 3]);

d. 提取JSON数据

e. 函数参数的默认值

f. 遍历Map结构(!important)

g. 输入模块的指定方法(!important)
加载模块时,往往需要指定输入那些方法。解构赋值使得输入语句非常清晰。
const { SourceMapConsumer, SourceNode } = require("source-map");

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!