有人可以向我解释,在javascript中,返回结果的结果会有所不同:
› {} + []
» 0
› [] + {}
» "[object Object]"
答案 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,或者有这样一个方便的链接...