CodeMash 2012的“ Wat”演讲基本上指出了Ruby和JavaScript的一些怪异之处。
我在http://jsfiddle.net/fe479/9/上对结果做了JSFiddle 。
下面列出了特定于JavaScript的行为(我不了解Ruby)。
我在JSFiddle中发现我的某些结果与视频中的结果不符,我不确定为什么。但是,我很想知道JavaScript在每种情况下是如何在后台进行处理的。
Empty Array + Empty Array
[] + []
result:
<Empty String>
+
当与JavaScript中的数组一起使用时,我对运算符非常好奇。这与视频结果匹配。
Empty Array + Object
[] + {}
result:
[Object]
这与视频结果匹配。这里发生了什么?为什么这是一个对象。什么是+
运营商吗?
Object + Empty Array
{} + []
result:
[Object]
这与视频不匹配。视频表明结果为0,而我得到了[Object]。
Object + Object
{} + {}
result:
[Object][Object]
这也不匹配视频,输出变量如何导致两个对象?也许我的JSFiddle是错的。
Array(16).join("wat" - 1)
result:
NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
做wat + 1会导致wat1wat1wat1wat1
...
我怀疑这是直接的行为,即试图从字符串中减去数字会导致NaN。
Array(16).join("wat" - 1) + " Batman!"