This article needs a technical review. How you can help.
This article needs an editorial review. How you can help.
Resum
L'operador condicional (ternari) és l'únic operador de JavaScript que opera amb tres operands. Aquest operador és freqüentment usat com una simplificació de la sentència if
.
Sintaxi
condition ? expr1 : expr2
Paràmetres
condition
- Una expressió que avalua
true
ofalse
.
expr1
,expr2
- Expressions amb valors de qualsevol tipus.
Descripció
Si condition
és true
, l'operador retorna el valor de expr1
; de ser el contrari, retorna el valor de expr2
. Per exemple, per mostrar diferents missatges basats en el valor de la variable isMember
, es podria fer servir aquesta sentència:
"The fee is " + (isMember ? "$2.00" : "$10.00")
També es pot assignar variables depenent del resultat ternari:
var elvisLives = Math.PI > 4 ? "Yep" : "Nope";
És possible realitzar avaluacions ternàries múltiples (nota: L'operador condicional operator s'associa per la dreta):
var firstCheck = false, secondCheck = false, access = firstCheck ? "Access denied" : secondCheck ? "Access denied" : "Access granted"; console.log( access ); // logs "Access granted"
També es pot usar avaluacions ternàries en espais lliures per tal de fer diferents operacions:
var stop = false, age = 16; age > 18 ? location.assign("continue.html") : stop = true;
També es pot fer més d'una sola operació per cas, separant-les amb una coma:
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!") );
I per últim, també es pot fer més d'una operació durant l'assignació d'un valor. En aquest cas, el últim valor del parèntesis serparat per una coma serà el valor assignat.
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"
Especificacions
Especificació | Estat | Comentaris |
---|---|---|
1a edició deECMAScript. | Estàndard | Definició inicial. Implementat en JavaScript 1.0 |
ECMAScript 5.1 (ECMA-262) The definition of 'The conditional operator' in that specification. |
Standard | |
ECMAScript 6 (ECMA-262) The definition of 'Conditional Operator' in that specification. |
Release Candidate |
Compatibilitat amb navegadors
Característica | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Suport bàsic | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Característica | Android | Chrome per Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Suport bàsic | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |