Signo de interrogación y dos puntos en JavaScript [duplicado]
Me encontré con la siguiente línea
hsb.s = max != 0 ? 255 * delta / max : 0;
¿Qué significan ?
y :
en este contexto?
Se llama Operador Condicional (que es un operador ternario ).
Tiene la forma de: condition
? value-if-true
: value-if-false
Piense en ?
"entonces" y :
como "otra cosa".
Su código es equivalente a
if (max != 0)
hsb.s = 255 * delta / max;
else
hsb.s = 0;
Bien entre paréntesis para mayor claridad, es
hsb.s = (max != 0) ? (255 * delta / max) : 0;
significado regresar cualquiera
255*delta/max
si máximo! = 00
si máx == 0
hsb.s = max != 0 ? 255 * delta / max : 0;
?
es un operador ternario. Funciona como un if
conjunto con el:
!=
significa no es igual
Entonces, 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;
}
Probablemente esto quede un poco más claro cuando se escribe entre corchetes de la siguiente manera:
hsb.s = (max != 0) ? (255 * delta / max) : 0;
Lo que hace es evaluar la parte que está en los primeros paréntesis. Si el resultado es verdadero, entonces la parte después de ? y antes de que se devuelva:. Si es falso, se devuelve lo que sigue a:.
?: es una condición abreviada para else {}
problemas if(){}
. Entonces tu código es intercambiable con este:
if(max != 0){
hsb.s = 225 * delta / max
}
else {
hsb.s = 0
}
MDN - Operador condicional (ternario)