magnobiet
9/22/2016 - 12:56 AM

JavaScript "Stranger Things"

JavaScript "Stranger Things"

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.