任何人都可以告诉我为什么这是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)