Gli operatori di confronto sono usati per determinare a livello logico se due variabili o due tipi sono uguali.
In JavaScript abbiamo due diversi operatori per effettuare questa operazione:
- == (equality) determina se due espressioni hanno lo stesso valore, eventualmente applicando le opportune conversioni tra tipi per effettuare il confronto
- === (identity) determina se due espressioni hanno lo stesso valore ma senza effettuare conversioni (i due termini confrontati devono dunque essere dello stesso tipo)
- L'esempio seguente evidenzia a livello pratico la differenza di comportamento tra i due operatori:
var x = 3; alert(x==3); // true alert(x===3); // true alert(x=="3"); // true alert(x==="3"); // false
Molto spesso viene erroneamente usato il confronto di uguaglianza (==) anziché il più corretto ===.
La conversione tra tipi (cast) infatti, oltre ad avere un costo in termini di performance, a volte può generare risultati inattesi come negli esempi seguenti:
"" == "0"; // false 0 == ""; // true false == "false"; // false false == "0"; // true false == undefined; // false false == null; // false null == undefined; // true " \t\r\n " == 0; // true
Per queste ragioni molti analizzatori di qualità del codice JavaScript (come ad esempio JSLint) consigliano l'uso dell'operatore di identità al posto di quello di uguaglianza.
Per verificare la disuguaglianza abbiamo analogamente gli operatori != e !== mentre per il confronto > (è maggiore di), >= (è maggiore o uguale a), < (è minore di) e <= (è minore o uguale a).
Nota: come in tutti i linguaggi di tipo c-like (e a differenza ad esempio di Visual Basic) il singolo segno di uguaglianza = è usato per l'assegnazione.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Applicare un filtro per recuperare alcune issue di GitHub
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
Generare la software bill of material (SBOM) in GitHub
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Gestione degli stili CSS con le regole @layer
Creazione di plugin per Tailwind CSS: espandere le funzionalità del framework dinamicamente
Estrarre dati randomici da una lista di oggetti in C#
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Cambiare la chiave di partizionamento di Azure Cosmos DB
I più letti di oggi
- Utilizzare AAD su SQL Database durante lo sviluppo con Visual Studio
- Utilizzare il TransferControl in Windows Phone
- Gestione dei token negli input di testo con la Universal Windows Platform
- Dare temporaneamente accesso ad un blob di Azure Storage
- Impostare le policy CORS con Azure API Management
- Utilizzare database e servizi con gli add-on di Container App
- Utilizzare HttpModule in modalità asincrona
- Indicizzare i Blob Storage con Azure Search
- Creazione di StateTrigger personalizzati in Universal Windows Platform
- Modificare i criteri della clausola Where del LinqDataSource di ASP.NET