Operador Condicional (ternari)

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 o false.
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)

Vegeu també

Document Tags and Contributors

 Contributors to this page: teoli, llue
 Last updated by: teoli,