В статье «Wat» для CodeMash 2012 в основном отмечаются некоторые странные особенности 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
Ват + 1 приводит к wat1wat1wat1wat1
...
Я подозреваю, что это просто прямое поведение, которое при попытке вычесть число из строки приводит к NaN.
Array(16).join("wat" - 1) + " Batman!"
{} + {}
.