有人向我指出了在 javascript 中添加空数组的一些有趣的事情,但我不知道为什么它会以这种方式工作。
添加空数组会生成一个字符串。
换句话说,[] + []
回报""
我启动了我的控制台来测试它,果然,它可以工作。我进一步发现,这种行为不仅限于空数组。数字、字符串、数组和对象的数组在添加到任何其他数组时都会变成字符串。一些例子是:
[1] + [] //returns "1"
[1] + [2] //returns "12"
[1,2,3] + [2] //returns "1,2,32"
[{foo:'bar'},'foo','bar'] + [] //returns "[object Object],foo,bar"
当添加到任何其他对象时,它也会与其他对象一起发生,但前提是该对象位于右侧。如果它在左侧,则对象变为 0。
'foo' + {foo:'bar'} //returns "foo[object Object]"
1 + {foo:'bar'} //returns "1[object Object]"
{foo:'bar'} + 1 //returns 1
{foo:'bar'} + 'foo' //returns NaN
除非我将对象分配给变量,否则会发生这种情况。如果我使用X = {foo:'bar'}
,
X + 'foo' //returns "[object Object]foo"
物体又变回了字符串。
我可以理解为什么这种类型的转换可能会发生在==
运算符中,但是为什么加法会这样做呢?为什么加法会将数组和对象(是的,我知道数组也是对象)变成其他东西?