JavaScript si sa: lo si ama e lo si odia allo stesso tempo.
Un momento prima ti sembra un linguaggio fantastico con cui puoi fare quello che vuoi, in altri momenti vorresti disintegrare chiunque l’abbia creato.
Ciao mi chiamo Lorenzo Neri e sono un informatico: realizzo contenuti per aiutare le persone a padroneggiare l’arte del nuovo millennio, ovvero l’informatica!
In questo articolo, ti parlerò delle assurdità di JavaScript: alcune sono davvero curiose, altre è bene saperle prima di evitare il disastro peggiore che tu possa avere al lavoro!
Comparazioni con gli array
Creiamo un array, chiamiamolo “pippo”:
pippo=[0]
Se proviamo a compararlo con se stesso:
pippo==pippo --> true
Ok, niente di strano, ma proprio a compararlo con la negazione di se stesso:
pippo==!(pippo) --> true
… ok.
Comparazioni con i tipi
In JavaScript esiste “NaN” come tipo: sta per “Not a Number”, eppure proviamo a fare questa cosa:
typeof NaN --> “number”
JavaScript hai forse crisi di identità?
Andiamo avanti:
NaN==NaN --> false
E ancora:
typeof null --> “object”
Ma…
null instanceof Object --> false
E non finisce qui:
“string” instanceof String --> false

Booleani senza senso
Se provi a fare:
true+true===2 -->true
true-true===0 --> false
Ma che cosa ca…?!
La banana non è numero
Prova a scrivere:
('b' + 'a' + + 'a' + 'a').toLowerCase();
Otterrai “baNaNa”
Il motivo di questa uscita, è dato dall’operatore somma, che si vede sommare “pere” con “mele”, in questo caso meglio dire “banane” con il “nulla”: di fatto tra i due operatori “+” non è stato inserito alcun elemento di somma. JavaScript lo tratta come un “NaN”
parseInt e parolacce [NSFW io ve l’ho detto!]
Prova a scrivere:
parseInt(“c*zzo”) -> NaN
Ma se fai:
parseInt(“c*zzo",16) -> 12
Questo perchè la parseInt tratta la prima lettera che trova, ovvero “c” come un valore esadecimale, ovvero 12 in decimale.
Un mindfuck del genere solo JavaScript lo poteva fare.
Ah e ce ne sono tanti altri: se ne avessi scovato qualcun altro, ti invito a parlarne nei commenti 😀