En ocasiones necesitamos usar un condicional simple que evalúe una sola sentencia.
if(m < 0){
m = 0;
}
else{
m++;
}
Las condiciones con una sola sentencia pueden omitir las llaves
if(m < 0) m = 0; else m++;
y podemos ponerlo en una sola línea
if(m < 0) m = 0; else m++;
Sin embargo para estos casos nos puede venir muy bien utilizar el operador condicional o ternario que tiene la peculiaridad de ser el único operador que usa tres operandos
Alguna expresión ? si verdadero, esto : si no es verdadero,
esto otro;
Funciona de la siguiente manera:
Se evalúa una sentencia; si devuelve verdadero se evalúa entonces
la sentencia que queda a continuación del operador ? y a la izquierda
del operador : y si no es verdadero se evalúa la sentencia que queda
a la derecha del operador :
m < 0 ? m = 0 : m++;
Generalmente la sentencia a evaluar si es verdadera o no se usa con un condicional como en el ejemplo.
(condición: m es menor que cero ¿es cierto?) ? (si
es verdadero m vale entonces cero) : (si es falso m incrementa su valor
en 1)
pero no es necesario que la expresión a evaluar sea una condición.
Basta con que devuelva verdadero o falso (true o false)
verdadero = true;
verdadero ? alert('es verdadero') : alert('no es verdadero');
Recordemos que no sólo true evalúa como verdadero
ni false evalúa sólo como falso.
Los valores booleanos se evalúan como falso si devuelven:
Una cadena vacía ('')
0 ó -0
NaN (Not A Number)
Undefined
null
false
Los valores booleanos se evalúan como verdadero si devuelven:
Un objeto existente
Una cadena no vacía
Un valor numérico distinto a 0 ó a -0
true
En el ejemplo anterior
verdadero = true;
verdadero ? alert('es verdadero') : alert('no es verdadero');
obtendríamos el mismo resultado si
verdadero = 1
verdadero = 'leporcias'
<div id="verdadero">
Podemos usar también el operador condicional para asignar directamente el valor devuelto a una variable.
En vez de m < 0 ? m = 0 : m++;
Podemos pedirle m = m < 0 ? 0 : m++;
var edad = 45;
paco = edad <= 18 ? 'Menor de edad' : 'Mayor de edad';
También podemos usarlo para pasar argumentos a funciones
alert(edad <= 18 ? 'Menor de edad' : 'Mayor de edad');
Como se puede ver el uso del operador condicional puede ser muy útil
a la hora de darle algunos usos que no podríamos aplicar directamente
con la sentencia if then y nos puede ahorrar bastantes líneas
de código.