javascript - 无法解释这些结果

标签 javascript

<分区>

有人可以向我解释为什么会出现这些结果吗?

enter image description here

我知道这不是真正的问题,但我很想知道。

谢谢

最佳答案

这是因为+是数字和字符串相加的意思,所以也是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 如何知道指令放置在页面中的哪个位置?

javascript - 自动将按钮添加到行表

javascript - 如何在vue js中创建多行表单?

javascript - Vanilla Javascript slider 问题