Problema
Vuoi confrontare due stringhe per decidere se sono uguali.
Soluzione
Usa l'operatore ==
:
var nome = prompt("Come ti chiami?", "");
if(nome == 'Ciccio') {
alert('Bene!')
} else {
alert('Non ti chiami Ciccio!');
}
Discussione
Due stringhe vengono confrontate con l'operatore ==
. Quando questo operatore viene utilizzato in un test condizionale, il blocco di codice che segue viene eseguito solo se il test è vero (le stringhe sono uguali):
if(nome == 'Ciccio') {
//Questo alert viene eseguito
alert('Ti chiami Ciccio');
}
Se le stringhe non sono uguali, ed è presente il blocco else
, sarà quest'ultimo ad essere eseguito:
if(nome == 'Ciccio') {
//Questo NON viene eseguito
alert('Bene!')
} else {
//Questo viene eseguito
alert('Non ti chiami Ciccio!');
}
Ci sono diversi fattori che possono influenzare l'uguaglianza di due stringhe. Per esempio, le stringhe potrebbero essere uguali, ma differire per una lettera maiuscola/minuscola come nel caso "Ciccio/ciccio".
In questi casi conviene convertire tutte le lettere in maiuscole o minuscole utilizzando i metodi .toUpperCase()
e .toLowerCase()
rispettivamente, e poi effettuare il confronto.
if(nome.toLowerCase() == 'CICCIO') {
alert('Bene!')
} else {
alert('Non ti chiami Ciccio!');
}
Cosa succede se confrontiamo un numero con una stringa? Ad esempio se avessimo:
25 == "25" //vero
Questo codice risulta vero perché viene effettuato un cast (ovvero una conversione automatica) del numero alla stringa "25".
Ci sono volte in cui potresti non volere questa conversione automatica e sapere se effettivamente due oggetti sono identici. In questi casi devi utilizzare l'operatore ===
:
25 === "25" //falso
A volte potresti voler sapere quando due stringhe non sono uguali. In questi casi devi utilizzare gli operatori !=
e !==
. Questi operatori funzionano allo stesso modo degli operatori di uguaglianza, solamente verificano se gli oggetti sono diversi:
25 !== "25" //vero
Puoi utilizzare anche gli operatori minore e maggiore per confrontare le stringhe.
'ala' < 'barca' //vero
'erba' > 'cena' //vero
Non c'è differenza tra maggiore (>
) e maggiore o uguale (>=
). Questo vale anche per gli operatori minore (<
) e minore o uguale (<=
).