L'operatore condizionale (ternary) è l'unico operatore JavaScript che necessità di tre operandi. Questo operatore è frequentemente usato al posto del comando if
per la sua sintassi concisa e perché fornisce direttamente un espressione valutabile.
Sintassi
condizione ? espressione1 : espressione2
Parametri
condizione
- Un espressione booleana (che viene valutata in vero o
falso)
.
espressione1
,espressione2
- Espressione di qualunque tipo (vedi avanti nella pagina).
Descrizione
Se la condizione è vera
, l'operatore ritorna il valore di espressione1
; altrimenti, ritorna il valore di espressione2
. Per esempio, puoi usare questa espressione per mostrare un messaggio che cambia in base al valore della variabile isMember
:
"The fee is " + (isMember ? "$2.00" : "$10.00")
Puoi anche assegnare variabili dipendenti dal risultato di un operatore ternario:
var elvisLives = Math.PI > 4 ? "Yep" : "Nope";
Sono anche possibili espressioni con operatori ternari multipli (nota: l'operatore condizionale è associativo a destra):
var firstCheck = false, secondCheck = false, access = firstCheck ? "Access denied" : secondCheck ? "Access denied" : "Access granted"; console.log( access ); // logs "Access granted"
Puoi anche usare l'operatore ternario direttamente senza assegnamenti e senza combinazioni con altre espressioni, con lo scopo di valutare operazioni alternative:
var stop = false, age = 16; age > 18 ? location.assign("continue.html") : stop = true;
Puoi anche valutare operazioni multiple separandole con delle virgole:
var stop = false, age = 23; age > 18 ? ( alert("OK, you can go."), location.assign("continue.html") ) : ( stop = true, alert("Sorry, you are much too young!") );
Puoi anche valutare più operazioni durante l'assegnamento di una variabile. In questo caso, l'ultimo valore separato da una virgola nelle parentesi sarà il valore assegnato.
var age = 16; var url = age > 18 ? ( alert("OK, you can go."), // alert returns "undefined", but it will be ignored because // isn't the last comma-separated value of the parenthesis "continue.html" // the value to be assigned if age > 18 ) : ( alert("You are much too young!"), alert("Sorry :-("), // etc. etc. "stop.html" // the value to be assigned if !(age > 18) ); location.assign(url); // "stop.html"
Specifiche
Specification | Status | Comment |
---|---|---|
ECMAScript 2016 Draft (7th Edition, ECMA-262) The definition of 'Conditional Operator' in that specification. |
Draft | |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Conditional Operator' in that specification. |
Standard | |
ECMAScript 5.1 (ECMA-262) The definition of 'The conditional operator' in that specification. |
Standard | |
ECMAScript 1st Edition (ECMA-262) The definition of 'The conditional operator' in that specification. |
Standard | Initial definition. Implemented in JavaScript 1.0. |
Compatibilità con Browser
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |