最佳答案
CodeMash 2012的Wat演讲基本上指出了Ruby和JavaScript的一些奇怪的怪癖。
我做了一个JSFiddle的结果在http://jsfiddle.net/fe479/9/。
下面列出了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。