JavaScript数组和对象添加

时间:2012-11-15 14:51:53

标签: javascript

我正在测试一些JavaScript概念,我试图理解为什么:

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

返回'字符串':

typeof {}
typeof []

返回'对象'

我在NodeJS,FireFox,Chrome和IE9中尝试了这一切,结果相同。

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

来自+运营商文档:

  

如果Type(lprim)是String或Type(rprim)是String,那么   返回串联ToString(lprim)后跟ToString(rprim)的结果的字符串

由于对象的默认值是字符串(空字符串,如果是空对象),操作的返回值为'' + '' => ''

如果您关心内部,请参阅ECMAScript文档,了解+ operatorToPrimitive和对象的DefaultValue