有人可以向我解释一下他们返回的结果在 javascript 中如何不同:
› {} + []
» 0
› [] + {}
» "[object Object]"
有人可以向我解释一下他们返回的结果在 javascript 中如何不同:
› {} + []
» 0
› [] + {}
» "[object Object]"
这是因为{}
代码中的不是对象字面量,而是一个空块。
它被解析为:
{}; // 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”之类的结构是语法错误)。
如果有人知道更好的方法来搜索此类问题,或者有指向此类重复的方便的链接..