为什么我可以使用数组解构为引用赋值,而不是对象解构?

Ben*_*Ben 1 javascript

使用数组解构,我可以为引用赋值:

const o = {}
;[o['something']] = ['a', 'b', 'c']
console.log(o) // { something: 'a' }
Run Code Online (Sandbox Code Playgroud)

但是我不能对对象解构做同样的事情。为什么?

const o = {}
{ ['1']: o['something'] } = { '1': 'a' } // Syntax Error
Run Code Online (Sandbox Code Playgroud)

Che*_*yDT 5

你可以。问题只是这里{ }被解释为而不是对象文字!出于同样的原因,你不能写{ a: 1 }.a.

您可以将整个语句包装在括号中以避免此问题(与({ a: 1 }).a使上一个示例工作的方式相同):

const o = {}
;({ ['1']: o['something'] } = { '1': 'a' })
console.log(o) // { something: 'a' }
Run Code Online (Sandbox Code Playgroud)