2012-08-17 53 views
6

可能重复:
What is the explanation for these bizarre JavaScript behaviours mentioned in the 'Wat' talk for CodeMash 2012?哪有{} + []和[] + {}的结果是不同的

有人能向我解释thees返回结果如何可以在不同的JavaScript的:

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

因为它的JavaScript ...谁说,它有什么意义?! – Mehrdad 2012-08-17 04:44:24

+6

['WAT'](https://www.destroyallsoftware.com/talks/wat)? :) – Nemoden 2012-08-17 04:44:50

+3

http://stackoverflow.com/questions/9032856/what-is-the-explanation-for-these-bizarre-javascript-behaviours- mentioned-in-the – 2012-08-17 04:45:02

回答

7

这是因为在代码中{}不是对象文字,而是一个空白块。

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

({}) + []这产生相同的结果[] + {}比较;:

,因为它被解析在这种情况下,圆括号强制{}在“表达式上下文中”被处理/解析。

有重复的上一个SO一堆{}这个特定双本质(作为表达或阻止?),但,发现它们可以是有些麻烦..


我发现https://meta.stackexchange.com/questions/83911/how-do-i-search-stackoverflow-for-at-keywords-like-private-or-synthesize元和使用Symbolhound“我最近”重复我可以找到解决围绕问题like this(这涉及到需要添加括号时,“评估JSON”)或this(其中使用的结构像“{} ==虚假“是一个语法错误)。

如果有人知道一个更好的方式来为这类问题,以便进行搜索,或有一个链接到这种重复的得心应手..

+0

@ErikLandvall如果你会发现一些重复的东西,只是投票关闭/链接:)不要删除问题,它会被关闭/如果适当的话。 – 2012-08-17 04:51:32

+0

其实找到重复是问题。我确信在过去的几天里我看到了同样的问题,但是搜索'[]'不太好。 – nnnnnn 2012-08-17 05:00:17

+0

是的,我有这个问题。现在我只是试图将它们合并为pst声明。 http://stackoverflow.com/questions/9032856/what-is-the-explanation-for-these-bizarre-javascript-behaviours-mentioned-in-the – superhero 2012-08-17 05:49:49