有人指出在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"
Run Code Online (Sandbox Code Playgroud)
当添加到其他任何对象时,它也会与其他对象一起出现,但仅当对象位于右侧时才会出现.如果它在左侧,则对象变为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
Run Code Online (Sandbox Code Playgroud)
除非我将对象分配给变量,否则会发生这种情况.如果我用X = {foo:'bar'},
X + 'foo' //returns "[object Object]foo"
Run Code Online (Sandbox Code Playgroud)
然后对象又变成了一个字符串.
我可以理解为什么这种类型的转换可能会在==运算符中发生,但为什么要添加呢?为什么添加更改数组和对象(是的,我知道数组也是对象)到其他东西?
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |