<分区>
有人可以向我解释为什么会出现这些结果吗?
我知道这不是真正的问题,但我很想知道。
谢谢
标签 javascript
<分区>
有人可以向我解释为什么会出现这些结果吗?
我知道这不是真正的问题,但我很想知道。
谢谢
最佳答案
这是因为+
是数字和字符串相加的意思,所以也是unary operator .这也是因为 {}
既是空对象又是 block statement .
我可以解释一下。
[] + {}
两者都被转换为字符串。
[].toString() + {}.toString()
[].toString()
与[].join('')
相同,{}.toString()
是'[object Object]'
,所以第一个是[object Object]
。
第二个更令人困惑。
{} + []
此处的 {}
不被解释为一个对象,被解释为一个空 block 。于是里面的代码就跑了。里面什么都没有,所以它什么也不做,然后运行下一条语句:+[]
。这会将数组转换为 int,然后先将其转换为字符串。
{} + [] => +[] => +([].toString()) => 0
如果您将 {}
放在括号中,它将与第一个相同。
({}) + [] => '[object Object]'
关于javascript - 无法解释这些结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17220664/
相关文章:
javascript - 就地修改对象 javascript
javascript - 有没有更好的方法/模式来编写这个 jQuery 插件?
javascript - 银格 : Autosizing columns at run time not working in chrome/IE 11
javascript - 如何重定向到给定一组网站中的一个?
javascript - 使用 JavaScript SDK 的 AWS Cognito 开发人员身份验证
javascript - 如何避免 jQuery 调用引发 Firefox 警告?
javascript - Angular 如何知道指令放置在页面中的哪个位置?