A palestra 'Wat' para o CodeMash 2012 basicamente aponta algumas peculiaridades bizarras com Ruby e JavaScript.
Eu fiz um JSFiddle dos resultados em http://jsfiddle.net/fe479/9/ .
Os comportamentos específicos do JavaScript (como eu não conheço Ruby) estão listados abaixo.
Descobri no JSFiddle que alguns dos meus resultados não correspondiam aos do vídeo e não sei por que. No entanto, estou curioso para saber como o JavaScript está lidando com o trabalho nos bastidores em cada caso.
Empty Array + Empty Array
[] + []
result:
<Empty String>
Estou bastante curioso sobre o +
operador quando usado com matrizes em JavaScript. Isso corresponde ao resultado do vídeo.
Empty Array + Object
[] + {}
result:
[Object]
Isso corresponde ao resultado do vídeo. O que está acontecendo aqui? Por que isso é um objeto? O que o +
operador faz?
Object + Empty Array
{} + []
result:
[Object]
Isso não corresponde ao vídeo. O vídeo sugere que o resultado é 0, enquanto eu recebo [Objeto].
Object + Object
{} + {}
result:
[Object][Object]
Isso também não corresponde ao vídeo, e como a saída de uma variável resulta em dois objetos? Talvez meu JSFiddle esteja errado.
Array(16).join("wat" - 1)
result:
NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
Fazendo wat + 1 resultados em wat1wat1wat1wat1
...
Eu suspeito que este é apenas um comportamento direto que tentar subtrair um número de uma string resulta em NaN.
Array(16).join("wat" - 1) + " Batman!"
{} + {}
.