【问题标题】:How can {} + [] and [] + {} results be different [duplicate]{} + [] 和 [] + {} 结果如何不同[重复]
【发布时间】:2012-08-13 13:17:37
【问题描述】:

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

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

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

【问题讨论】:

标签: javascript


【解决方案1】:

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

解析为:

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

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

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


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

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

【讨论】:

  • 实际上找到重复项是问题所在。我确定我在过去几天看到了同样的问题,但在 [] 上搜索效果不太好。
  • 是的,我遇到了这个问题。现在我只是想按照 pst 的说明合并它们。 stackoverflow.com/questions/9032856/…
猜你喜欢
  • 2018-02-13
  • 1970-01-01
  • 2018-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-25
相关资源
最近更新 更多