7

可能重复:
CodeMash 2012 的“Wat”演讲中提到的这些奇怪的 JavaScript 行为的解释是什么?

有人可以向我解释一下他们返回的结果在 javascript 中如何不同:

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

1 回答 1

7

这是因为{}代码中的不是对象字面量,而是一个空块。

它被解析为:

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

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

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


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

如果有人知道更好的方法来搜索此类问题,或者有指向此类重复的方便的链接..

于 2012-08-17T04:47:51.400 回答