为什么({} + {}).长度等于30?

Jac*_* Pu 10 javascript

{}到String?

任何人都可以告诉我为什么这是30?

({}+{}).length //  = 30?
Run Code Online (Sandbox Code Playgroud)

但这是0?

([] + []).length //  = 0?
Run Code Online (Sandbox Code Playgroud)

Ale*_*ara 11

这是预期的行为.当您+在2个数组上使用运算符时,两个数组都会转换为字符串,这与调用基本相同.join(',').如果数组都为空,则会连接两个空字符串,从而产生一个具有0长度的空字符串.

([] + []) = ""
Run Code Online (Sandbox Code Playgroud)

但是对于对象,它们被转换为字符串的方式是不同的.默认情况下,+操作符会将对象强制转换为字符串,这将导致字符串"[object Object]"Do两次,并且您将获得一个30字符长字符串.

({}+{}) = "[object Object][object Object]"
Run Code Online (Sandbox Code Playgroud)