对象解构赋值的基本形式
const { a: renameA } = { a: 1, }
a: 对应被解构对象
的变量a
renameA: 对变量a
的赋值声明
拆解之后可以这样看
const renameA = { a: 1 }.a
数组解构赋值的基本形式
const [a, b, c] = [1, 2, 3,]
a, b, c: 所在的位置对应被解构数组
的下标的值,解构出来后被赋值给变量a 变量b 变量c
拆解之后可以这样看
const
a = [1, 2, 3][0],
b = [1, 2, 3][1],
c = [1, 2, 3][2]
数组也是特殊的对象,所以我们也可以对他使用对象的解构赋值方式
let arr = [1, 2, 3]
let { 0: first, [arr.length - 1]: last, length: len } = arr
console.log(first) // 1
console.log(last) // 3
console.log(len) // 3
如果给赋值变量加上()
呢?
[(x)] = [3] // 可以
([x]) = [3] // 不可以 左边是表达式 匹配规则不符,所以直接报错
解构的隐式转换
var [a, b, c] = 'hello' // 返回包装类 String('hello')
console.log(a, b, c) // 'h' 'e' 'l'
var { length } = 'hello'
console.log(length) // 5
var { length } = [1, 2, 3, 4,]
console.log(length) // 4
var { toString: arrToString } = [] // 返回包装类 Array([])
var { toString: strToString } = '' // 返回包装类 String('')
var { toString: numToString } = 0 // 返回包装类 Number('hello')