without the ternario operator operador multiple else javascript syntax operators conditional-operator

javascript - the - ternary operator php



Signo de interrogaciĆ³n y dos puntos en JavaScript (6)

Adecuadamente entre paréntesis para mayor claridad, es

hsb.s = (max != 0) ? (255 * delta / max) : 0;

es decir, retorno tampoco

  • 255*delta/max si max! = 0
  • 0 si max == 0

Me encontré con la siguiente línea

hsb.s = max != 0 ? 255 * delta / max : 0;

¿Qué hacen los ? y : significa en este contexto?


Esto es probablemente un poco más claro cuando se escribe entre paréntesis de la siguiente manera:

hsb.s = (max != 0) ? (255 * delta / max) : 0;

Lo que hace es evaluar la parte en los primeros paréntesis. Si el resultado es verdadero, entonces la parte después de la? y antes de la: se devuelve. Si es falso, entonces se devuelve lo siguiente:


Se llama el Operador Condicional (que es un operador ternario ).

Tiene la forma de: ¿ condition ? value-if-true : value-if-false
Piensa en el ? como "entonces" y : como "else".

Su código es equivalente a

if (max != 0) hsb.s = 255 * delta / max; else hsb.s = 0;


Ten cuidado con esto A -1 se evalúa como verdadero, aunque -1! = Verdadero y -1! = Falso. Confía en mí, lo he visto suceder.

asi que

-1? "lado verdadero": "lado falso"

evalúa al "lado verdadero"


hsb.s = max! = 0? 255 * delta / max: 0;

? es un operador ternario, funciona como si en conjunto con el:

! = significa que no es igual

Así, la forma larga de esta línea sería

if (max != 0) { //if max is not zero hsb.s = 255 * delta / max; } else { hsb.s = 0; }


? : ¿No es este el operador ternario?

var x= expression ? true:false