对于 CodeMash 2012 的 “Wat” 演讲中提到的这些奇怪的 JavaScript 行为,有什么解释?
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
{} + {}
result:
[Object][Object]
这也与视频不匹配,输出变量如何导致两个对象?也许我的JSFiddle是错的。
Array(16).join("wat" - 1)
result:
NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
做 wat + 1 结果 ...wat1wat1wat1wat1
我怀疑这只是一个简单的行为,试图从字符串中减去一个数字会导致NaN。