JavaScript中“+”的圈套

JavaScript中“+”的陷阱以下运算??真让人匪夷所思,前面一路推理下来最后竟然不对。其实原因是第一个{}并非表

JavaScript中“+”的陷阱

以下运算

?

?

真让人匪夷所思,前面一路推理下来最后竟然不对。

其实原因是第一个{}并非表示对象直接量,而是语句块的意思。参考:Javascript中大括号“{}”的多义性

?

即第一个大括号是语句块,该语句块中没有任何执行语句,可以忽略。演变是这样的

?

1 {}+{}

2 +{}

3 +"[object Object]"

4 NaN

?

?

恍然大悟了,加个小括号强制将第一个大括号转成对象直接量。结果就是期望的了。如

?

?

补充:node环境中 {}+{} 输出的是“[object Object][object Object]” 却不是 NaN


相关:JavaScript中“+”的陷阱(续)