CodeMash 2012的"Wat"谈话基本上指出了Ruby和JavaScript的一些奇怪的怪癖.
我在http://jsfiddle.net/fe479/9/上做了一个JSFiddle的结果.
下面列出了JavaScript特有的行为(我不知道Ruby).
我在JSFiddle中发现我的一些结果与视频中的结果不一致,我不知道为什么.但是,我很想知道JavaScript在每种情况下如何处理幕后工作.
Empty Array + Empty Array
[] + []
result:
<Empty String>
Run Code Online (Sandbox Code Playgroud)
+在JavaScript中使用数组时,我对运算符非常好奇.这与视频的结果相匹配.
Empty Array + Object
[] + {}
result:
[Object]
Run Code Online (Sandbox Code Playgroud)
这与视频的结果相匹配.这里发生了什么?为什么这是一个对象.什么是+运营商吗?
Object + Empty Array
{} + []
result
[Object]
Run Code Online (Sandbox Code Playgroud)
这与视频不符.该视频表明结果是0,而我得到[对象].
Object + Object
{} + {}
result:
[Object][Object]
Run Code Online (Sandbox Code Playgroud)
这与视频不匹配,输出变量如何导致两个对象?也许我的JSFiddle错了.
Array(16).join("wat" - 1)
result:
NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
Run Code Online (Sandbox Code Playgroud)
做wat + 1导致wat1wat1wat1wat1......
我怀疑这只是简单的行为,试图从字符串中减去一个数字导致NaN.
在Firefox 3.5中,我在Firebug控制台中输入:
false=={} // => evals to false
{}==false // syntax error
Run Code Online (Sandbox Code Playgroud)
对此有何解释?
以下内容将在Firebug或jsconsole.com或其他Javascript交互式控制台中显示:
>>> foo = { a : 1, b : 2.2 }
Object { a=1, more...}
>>> foo.a
1
>>> foo.b
2.2
>>> { a : 1, b : 2.2 }
SyntaxError: invalid label { message="invalid label", more...}
>>> { a : 1 }
1
Run Code Online (Sandbox Code Playgroud)
为什么是1返回{a : 1}以及为何{a : 1, b : 2.2}给了一个错误?在Ruby中,它们会以您定义它的方式返回.