Realizato da

Pubblicato il

differenza

doppio

triplo

uguale

javascript


Ciao a tutti e benvenuti in questa guida dove vi parlerò brevemente delle differenze che ci sono tra il doppio uguale == ed il triplo uguale === in JavaScript. In seguito andremo a discutere se è meglio utilizzare == o === nei vostri programmi JS.

Qual è la differenza tra == e === in JavaScript?

La differenza principale sta nel metodo utilizzato per determinare se i due dati sono uguali. 

Nel caso del doppio uguale == viene effettuata un'uguaglianza astratta (abstract equality) e nel caso del triplo uguale === viene effettuata un'uguaglianza stretta (strict equality). Ma cosa significano questi due termini? Vediamo insieme!

La differenza tra i due non è difficile da capire, e sono convinto che riuscirete a capirla guardando questo semplice snippet JS.

console.log(1 == '1');
// true
console.log(1 === '1');
// false


Capito? Se ancora non avete capito non vi preoccupate ecco la spiegazione:

Nel caso del doppio uguale (==), l’uguaglianza astratta effettuerà una conversione tra i due valori da confrontare, prima di decidere se restituire true o false

Nel caso del triplo uguale (===), l’uguaglianza restituirà true se il valore ed il tipo dei due dati sono uguali, e false se i due dati sono di tipo diverso (anche se hanno lo stesso valore).

quali sono le differenze tra == e === in JavaScript JS

Nell’esempio in alto eseguiamo un controllo di uguaglianza tra due valori (1). Ma il valore a sinistra dell’uguale è un numero, e quello a destra dell’uguale è una String. 

Nella prima linea, utilizzando == possiamo vedere un risultato dell’uguaglianza positivo dato che i due dati hanno lo stesso valore una volta effettuata la conversione del tipo.

Nella seconda linea invece utilizzando === viene subito rivelato che i due dati sono di tipo diverso (un numero ed una String) e viene restituito immediatamente un false.

Altri esempi delle differenze tra == e === in JavaScript

Se ancora non siete convinti di cosa cambia tra == e === in JS andiamo ad analizzare altri esempi con diversi tipi di dati.

Prendiamo come esempio questo snippet:

console.log('1' == true);
// true
console.log('1' === true);
// false


Se eseguiamo questo codice possiamo vedere di nuovo le differenza tra == e === in JavaScript. In JS true e false hanno una corrispondenza numerica dove true corrisponde ad 1 e false a 0. Nell’esempio superiore possiamo vedere che con il doppio uguale == i due valori vengono convertiti e l’uguaglianza esiste. Con l’uso del triplo uguale === viene visto che i due dati non sono dello stesso tipo e viene restituito false.

Un esempio che forse potrebbe confondere qualcuno sul funzionamento di == e === in JS è questo:

consoe.log('ciao' == new String('ciao'));
// true
consoe.log('ciao' === new String('ciao'));
// false


Questo esempio mostra la differenza sottile che vi è tra le String literals (Stringhe anonime) e gli oggetti String. Questi due potrebbero sembrare dello stesso tipo ma non lo sono!

È meglio utilizzare == o === in JavaScript?

In fine andiamo a vedere se nella programmazione web è meglio utilizzare == o ===

In generale è meglio utilizzare il triplo uguale nelle vostre app, perché rende il codice più preciso e specifico.  Il === aiuta ad eliminare problemi che si possono presentare quando un’uguaglianza passa per positiva anche se non doveva. 

Se dovete fare un confronto fra dati di diverso tipo è una best practice convertire manualmente il tipo di dato, ed in seguito utilizzare il triplo uguale === In questo modo possiamo gestire meglio gli errori e rendere le nostre applicazioni molto più stabili.

Spero che ora avete un’idea più precisa delle differenze che ci sono tra == e === in JavaScript. Se avete qualche dubbio o domande su JS, programmazione o altro commentate in basso e risponderò appena possibile.

Grazie e ci vediamo alla prossima :)