Sumário
O operador condicional (ternário) é o único operador JavaScript que possue três operandos. Este operador é frequentemente usado como um atalho para a instrução if
.
Sintaxe
condition ? expr1 : expr2
Parâmetros
-
condition
-
Uma expressão que é avaliada como
true
oufalse
.
-
expr1
,expr2
- Expressões com valores de qualquer tipo.
Descrição
Se condition
é true
, o operador retornara o valor de expr1
; se não, ele retorna o valor de exp2
. Por exemplo, para exibir uma mensagem diferente baseada no valor da variável isMember
, você poderá utilizar o código (statement) seguinte:
"The fee is " + (isMember ? "$2.00" : "$10.00")
Conforme o resultado da operação, você também poderá atribuir a variáveis:
var elvisLives = Math.PI > 4 ? "Yep" : "Nope";
Também são possíveis múltiplas avaliaçãoes ternárias (nota: o operador condicional é associativo a direita):
var firstCheck = false,
secondCheck = false,
access = firstCheck ? "Access denied" : secondCheck ? "Access denied" : "Access granted";
console.log( access ); // logs "Access granted"
Você também pode usar avaliações ternárias no espaço livre de modo a fazer diferentes operações:
var stop = false, age = 16;
age > 18 ? location.assign("continue.html") : stop = true;
Você também pode fazer mais do que uma única operação em cada caso, separando-os por vírgula:
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!")
);
Você também pode fazer mais de uma operação durante a atribuição de um valor. Neste caso, o último valor separado por vírgula dentro do parêntesis será o valor a ser atribuído.
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"
Especificações
Especificações | Status | Comentários |
---|---|---|
ECMAScript 1st Edition. | Standard | Definição inicial. Implementado em 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 |
Compatibilidade dos navegadores (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) |