为什么我可以使用数组破坏性赋值给一个引用,而不是对象破坏性赋值?[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我可以使用数组破坏性赋值给一个引用,而不是对象破坏性赋值?[重复]相关的知识,希望对你有一定的参考价值。

使用数组反构,我可以给一个引用赋值。

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 )

以上是关于为什么我可以使用数组破坏性赋值给一个引用,而不是对象破坏性赋值?[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Golang复制结构体

为啥不能用赋值语句将一个字符串常量直接赋给一个字符数组

关于在KEIL中对字符数组赋值字符串操作的奇怪问题?

二维数组名不能赋值给二级指针- -

对使用字符指针变量和字符数组的讨论

给数组赋值时,引用与数组切片的区别