字符串
也可以解构赋值
。这是因为此时,字符串
被转换成了一个类似数组
的对象。
(function (log) {
const [a, b, c, d, e] = 'hello';
log(a); // "h"
log(b); // "e"
log(c); // "l"
log(d); // "l"
log(e); // "o"
})(console.log)
类似数组
的对象
都有一个length
属性,因此还可以对这个属性
解构赋值。
(function (log) {
const {
length: len
} = 'hello';
log(len); // 5
})(console.log)
解构赋值
时,如果等号右边是数值
和布尔值
,则会先转为对象
。
(function (log) {
const {
toString: s1
} = 123;
log(s1 === Number.prototype.toString); // true
const {
toString: s2
} = true;
log(s2 === Boolean.prototype.toString); // true
})(console.log)
上面代码中,数值
和布尔值
的包装对象
都有toString
属性,因此变量s1
和变量s2
都能取到值
。