理解ES6中的字符串和数值解构赋值

Jun 04 2018 Node.js

ES6 允许从数组和对象中提取值,然后对变量进行赋值,这种“模式匹配”被称为解构。

1
2
3
4
5
6
7
8
9
let [a, b, c] = [2, 3, 4];

//也就是
let a = 2;
let b = 3;
let c = 4;

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

当等号右边不是数组或者对象,类如字符串、数值、布尔值会被转换成了一个类似数组的对象,这些对象都有一个length属性,因此还可以对这个属性解构赋值。

1
2
let {length : len} = 'he';
len // 2

上面的字符串hello会先转化为new String('he')包装对象,所以会有lengthtoString等属性或方法,所以如果要理解这个的话可以把上述转化为:

1
2
let hello = new String('he');
let {length: len} = {0: "h", 1: "e", length: 2,__proto__: String}