1

我正在测试一些 JavaScript 概念,并试图了解原因:

typeof({} + {})
typeof([] + [])

返回一个“字符串”:

typeof {}
typeof []

返回一个“对象”

我已经在 NodeJS、FireFox、Chrome 和 IE9 中尝试过,结果都一样。

4

3 回答 3

4

运算符被+定义为连接字符串或添加数字。如果您尝试其他方法,则必须先将操作数转换为字符串或数字。看起来这里首选字符串。

您可以通过分别定义函数string和对象来控制返回的内容number.toString.valueOf

于 2012-11-15T14:54:28.823 回答
1

您不能使用 + 运算符连接或“添加”数组或对象。

如果您添加两个对象,它们的字符串表示将被连接起来。

于 2012-11-15T14:53:36.633 回答
0

运算符尝试将+操作数强制为通用类型。在这种情况下,类型是字符串,因为添加对象或数组没有任何意义。

+操作员文档中:

如果 Type(lprim) 是 String 或 Type(rprim) 是 String,则返回作为连接 ToString(lprim) 后跟 ToString(rprim) 的结果的 String

由于对象的默认值为字符串(空字符串,在空对象的情况下),因此操作的返回值为'' + '' => ''.

如果您关心内部结构,请参阅+运算符ToPrimitive和对象的ECMAScript 文档。DefaultValue

于 2012-11-15T14:58:15.703 回答