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 的简单行为。