Le assurdità di JavaScript

di Lorenzo Neri
0 commento 150 visualizzazioni

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.

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


Idiot Facepalm GIF

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 😀

Potrebbero interessarti

Lascia un commento

Questo sito potrebbe fare uso di cookie e siccome l'UE mi obbliga a fartelo presente, eccoti il classico banner dove puoi decidere come gestirli. Accetta Leggi di più