MEME JavaScript #005
Spieghiamo il MEME JavaScript: null > 0 è false, null == 0 è false ma null >= 0 è true
Questo MEME sul JavaScript fa leva sul comportamento degli operatori di confronto quando gli operandi non sono necessariamente valori numerici:
Puoi trovare maggiori informazioni sugli operatori nella video lezione dedicata del mio corso sul JavaScript Semplificato per Google: https://www.youtube.com/watch?v=9agqHjskIW8
Eseguiamo in console le stesse operazioni del MEME per assicurarne il risultato.
Se null > 0 risponde false
e null < 0 risponde false
e anche null == 0 risponde false
allora perché null >= 0 risponde true?
Per completezza, anche null <= 0 risponde true, ma non ci aiuta molto a capire il motivo.
La spiegazione invece, si può trovare consultando le specifiche di ECMAScript, uno standard di linguaggio di scripting pensato per garantire l'interoperabilità delle pagine web tra diversi browser e, in particolare, nella sezione dedicata agli operatori di confronto.
Per quanto riguarda gli operatori minore, maggiore, minore uguale e maggiore uguale, nel caso specifico dell’esempio, danno il risultato di un confronto relazionale astratto che segue alcune specifiche regole.
All'atto pratico JavaScript tenta di convertire in numero i valori ai lati dell'operatore di confronto. 0 è già un numero, mentre null non lo è. Per cui la conversione implicita effettuata dal linguaggio sarebbe:
Number(null) // che dà come risultato 0
Per questo motivo possiamo riscrivere le operazioni come 0 > 0 e 0 < 0. Va da sé che il risultato è in entrambi i casi false mentre, di conseguenza, è true nel caso di 0 >= 0 e 0<= 0. Ecco spiegato il motivo dell’apparente incongruenza.
Rimane tuttavia il dubbio del perché l’operatore di uguaglianza tra null e 0 risponda false.
In effetti può trarre in inganno, ma anche qui c’è una spiegazione. Infatti, la logica non è la stessa appena vista con gli operatori di confronto, ovvero non viene effettuata una conversione implicita, quindi non abbiamo 0 == 0 che, a tutti gli effetti, restituirebbe true. Questo perché con l’operatore di uguaglianza le specifiche sono diverse. Nel caso in questione, non rispettando alcuna casistica particolare tra quelle definite, non viene effettuata alcuna conversione automatica in numero, per cui null rimane tale, e quindi, non è uguale a 0. L'operazione restituisce false.
Sull'operatore di uguaglianza trovi nel mio canale un MEME dedicato molto interessante per il quale ti lascio il link in sovraimpressione: https://www.youtube.com/watch?v=InrK5jLI95w&t=60s
Spero che questo video ti sia piaciuto, fammelo sapere nei commenti e non peritarti a scrivere se hai altre curiosità del JavaScript che vorresti approfondire. Ti invito anche iscriverti al mio canale se ancora non l'hai fatto e ci vediamo al prossimo MEME, ciao ;)
Non ci sono commenti
Nessuno ha ancora commentato questo articolo, fallo tu per primo!
scrivi un commento