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