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" };
|
当等号右边不是数组或者对象,类如字符串、数值、布尔值会被转换成了一个类似数组的对象,这些对象都有一个length
属性,因此还可以对这个属性解构赋值。
1 2
| let {length : len} = 'he'; len
|
上面的字符串hello
会先转化为new String('he')
包装对象,所以会有length
、toString
等属性或方法,所以如果要理解这个的话可以把上述转化为:
1 2
| let hello = new String('he'); let {length: len} = {0: "h", 1: "e", length: 2,__proto__: String}
|