CodeMash 2012の「ワット」の話は、基本的にRubyとJavaScriptのいくつかの奇妙な癖を指摘しています。
結果のJSFiddleをhttp://jsfiddle.net/fe479/9/で作成しました。
(Rubyを知らないので)JavaScript固有の動作を以下に示します。
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]
これもビデオと一致しません。変数を出力すると2つのオブジェクトがどのように生成されますか?多分私のJSFiddleは間違っています。
Array(16).join("wat" - 1)
result:
NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
ワット+ 1を実行するとwat1wat1wat1wat1
...
これは文字列から数値を減算しようとするとNaNが発生する単純な動作だと思います。
Array(16).join("wat" - 1) + " Batman!"
{} + {}
。