JavaScript "Stranger Things"
O JavaScript possui uma série de curiosidades em relação a algumas instruções. Portanto, tome cuidado se precisar utilizar qualquer uma dessas instruções listadas abaixo.
0.1 + 0.2 == 0.3 // false
1 / 0 // Infinity
-1 / 0 // -Infinity
0 / -1 // -0
0 == -0 // true
++Math.PI // 4.141592653589793
var a = 1 / "a" // NaN
var b = "b" // "b"
isNaN(a) // true
isNaN(b) // true
NaN == NaN // false
typeof NaN // "number"
typeof ([[], {}] + []) // "string"
~null // -1
[5*5] - 1 * [] // 25
[12, 2, 1].sort() // [1, 12, 2]
[] + [] // ""
[] * [] // 0
[] + {} // "[object Object]"
{} + [] // 0
{} - [] // -0
{} + {} // "[object Object][object Object]"
JSON.stringify({regex: /a/}) // "{"regex":{}}"
document.querySelector('elemento qualquer').attributes[0] + "" // "[object Attr]"
Obs.: Instruções que usam DOM, obviamente, não funcionam no NodeJS.
O fato de o retorno não ser esperado ou óbvio, não quer dizer que, necessariamente, ele seja um bug ou algo que passou despercebido pelas pessoas que matêm a linguagem e/ou interpretadores.