使用数组反构,我可以给一个引用赋值。
const o = {}
;[o['something']] = ['a', 'b', 'c']
console.log(o) // { something: 'a' }
但我不能用对象反构造来做同样的事. 为什么?
const o = {}
{ ['1']: o['something'] } = { '1': 'a' } // Syntax Error
你可以。问题是 { }
解释为 阻止 而不是一个对象的字面意思! 出于同样的原因,你不能写 { a: 1 }.a
.
你可以用 parens 包裹整个语句,以避免这个问题(方法与 ({ a: 1 }).a
使得前面的例子可以使用)。)
const o = {}
;({ ['1']: o['something'] } = { '1': 'a' })
console.log(o) // { something: 'a' }
变量的值可以通过使用括号与声明分开的方式进行反结构分配 ( ... )
围绕着任务声明,像。
const o = {};
({ ['1']: o['something'] } = { '1': 'a' });
console.log( o )
如同前文所述 文件,
括号内的内容
( ... )
当使用没有声明的对象字面分解赋值时,需要在赋值语句的周围加上""。
{a, b} = {a: 1, b: 2}
不是有效的独立语法,因为{a, b}
左手边的是一个块,而不是一个对象文字。然而,
({a, b} = {a: 1, b: 2})
是有效的,正如const {a, b} = {a: 1, b: 2}
您的
( ... )
表达式前面需要加上分号,或者它可以用来执行前一行的函数。