{} + []和[] + {}结果如何不同

时间:2012-08-17 04:42:43

标签: javascript

  

可能重复:
  What is the explanation for these bizarre JavaScript behaviours mentioned in the 'Wat' talk for CodeMash 2012?

有人可以向我解释,在javascript中,返回结果的结果会有所不同:

› {} + []
» 0
› [] + {}
» "[object Object]"

1 个答案:

答案 0 :(得分:7)

这是因为代码中的{} 不是对象文字,而是空块。

它被解析为:

{};   // empty block
+ []; // this result is shown in the console

({}) + []比较,产生与[] + {}相同的结果;在这种情况下,括号强制{}在表达式上下文"中处理/解析"。

关于{}(作为表达式或块?)的这种特殊的双重性质,有关于SO的重复的,但是找到它们可能有些棘手......


我在Meta上找到https://meta.stackexchange.com/questions/83911/how-do-i-search-stackoverflow-for-at-keywords-like-private-or-synthesize,并使用Symbolhound"最接近"重复我可以找到解决问题like this(这与需要在"评估JSON"时添加括号)或this(其中使用类似&的结构) #34; {} == false"是语法错误。)

如果有人知道更好的方法来搜索此类问题的SO,或者有这样一个方便的链接...