加载中...
ES6中的解构赋值
发表于:2022-01-08 | 分类: ES6语法

线上网站搭建过程


数组的解构赋值

基本用法

ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。

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

上面代码表示,可以从数组中提取值,按照对应位置,对变量赋值。

本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。
解构不成功变量的值为undefined

如果=右边不是可以遍历的数据结构(不具有 Iterator 接口),将会报错
=左边有默认值时,且=左边严格等于undefined,默认值才会生效

let [x = 1] = [undefined];
x // 1
let [x = 1] = [null];
x // null

上面代码中,如果一个数组成员是null,默认值就不会生效,因为null不严格等于undefined。

对象的解构赋值

基本用法

变量与属性同名的情况。

let { bar, foo } = { foo: 'aaa', bar: 'bbb' };
//let { foo: foo, bar: bar } = { foo: 'aaa', bar: 'bbb' };
foo // "aaa"
bar // "bbb"
let { baz } = { foo: 'aaa', bar: 'bbb' };
baz // undefined

同样的,解构失败得到的值为undefined

也就是说,对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者。

变量与属性不同名时,即完整写法

let { foo: baz } = { foo: 'aaa', bar: 'bbb' };
baz // "aaa"
foo // error: foo is not defined

foo是匹配的模式,baz才是变量。真正被赋值的是变量baz,而不是模式foo

圆括号问题

语句不能使用
值可以使用

上一篇:
Less学习
下一篇:
Babel转码器
本文目录
本文目录