“==” vs “===” Quale usare in JavaScript?

di Lorenzo Neri

Nelle operazioni di confronto abbiamo due possibilità, in questo articolo scopriamo le differenze tra “==” vs “===”: quale usare in JavaScript?

JavaScript si sa, è assurdo: delle volte talmente assurdo che è doveroso parlare di quanto lo sia in un articolo a se stante. È assurdo persino nelle operazioni di confronto: infatti ci sono due operatori di confronto differenti.

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!

Operatore “==” come funziona

L’operatore “==” in JavaScript ha la funzione di verificare l’uguaglianza tra due elementi confrontati. In altre parole, si preoccupa solo di controllare se il contenuto del primo elemento sia uguale al secondo.

Ovviamente c’è anche la sua controparte: l’operatore “!=”, che verifica se il contenuto del primo elemento sia diverso dal secondo.

Tuttavia JavaScript per certi versi se ne frega del tipo di contenuto. E di fatto delle sue assurdità ne ho parlato abbondantemente in questo articolo assurdo.

Facciamo un esempio completo:

2=="2" => true
2!="2" => false

Direi che proprio non ci siamo. In qualsiasi altro linguaggio di programmazione il compilatore si spaccherebbe e darebbe persino errore.

E di fatto, per queste assurdità legate a JavaScript, è stato necessario integrare un operatore che si preoccupi anche del tipo.

Operatore “===” come funziona

L’operatore “===” in JavaScript ha il compito di verificare l’identità tra due elementi confrontati. In altre parole, si preoccupa non solo di controllare se il contenuto del primo elemento sia uguale al secondo, ma si preoccupa anche che il tipo sia coincidente.

Naturalmente anche in questo caso, c’è la sua nemesi “!==” che si accerta di questo: il primo elemento non solo ha un contenuto diverso dal secondo, ma anche che il tipo sia diverso.

Di fatto, facciamo un esempio:

2==="2" => false
2!=="2" => true

Tutto molto bello, tutto più sensato, ma con i tipi di riferimento come array oppure oggetti le cose non vanno per il verso giusto.

Chiarito il discorso in termini di sfida proprio come “==” vs “===” quale usare in Javascript andiamo oltre.

Operatori “==” e “===” con gli oggetti

Se confrontassimo due array con contenuto identico non funzionerebbe nessuno dei due.

Facciamo un esempio:

var a=[1,2,3];
var b=[1,2,3];
a==b => false
a===b => false

Il motivo di questa stranezza è in realtà semplice. Abbiamo creato due oggetti, quindi i loro riferimenti sono diversi. Pur avendo egual contenuto e tipo, siccome i loro riferimenti sono diversi, per JavaScript entrambi gli operatori devono tornare “false”.

Perciò, entrambi gli oggetti devono far riferimento allo stesso riferimento, scusa il gioco di parole 😀

Per esempio:

var a=[1,2,3];
var c=a;
c==a => true
c===a => true

Questo, perchè la variabile “c” è stata valorizzata con il valore esatto di “a”, ovvero lo stesso riferimento.

Ora che abbiamo capito come funzionano “==” e “===”, la domanda finale è questa.

== o === quale due usare in JavaScript? Ai posteri l’ardua sentenza?

Vista l’assurdità del funzionamento di JavaScript durante le operazioni di confronto, visto che non vuoi diventare scemo durante una sessione di debug io ti suggerirei di usare caldamente l’operatore “===”.

Da un punto di vista dell’efficienza computazionale, le cose sono praticamente identiche.

Ovviamente, se fossi curioso e volessi approfondire, di Javascript ne ho parlato tanto. E di fatto sul mio blog, puoi trovare un’intera categoria a riguardo: che sta proprio qui a distanza di un click.

Continua a scoprire di più con questi articoli!

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ù