Me encontré con la siguiente línea
hsb.s = max != 0 ? 255 * delta / max : 0;
¿Qué significan ?y :en este contexto?
javascript
syntax
operators
conditional-operator
Inaimathi
fuente
fuente

Infinity(causada por la división por cero).Respuestas:
Se llama operador condicional (que es un operador ternario ).
Tiene la forma de
condition:?value-if-true:value-if-falsePiense en el
?como "entonces" y:como "más".Tu código es equivalente a
fuente
additionque un operador binario que opera en las expresiones anteriores y siguientes (por ejemplo, 1 + 2, el más opera en 1 y 2), o la negación es un operador unario (por ejemplo, -x donde se niega el valor de x).Bien entre paréntesis para mayor claridad, es
significado retorno tampoco
255*delta/maxsi max! = 00si max == 0fuente
Esto es probablemente un poco más claro cuando se escribe entre paréntesis de la siguiente manera:
Lo que hace es evaluar la parte en los primeros corchetes. 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:
fuente
?Es un operador ternario. Funciona como unifen conjunto con el:!=significa no es igualEntonces, la forma larga de esta línea sería
fuente
? :¿No es este el operador ternario?var x= expression ? true:falsefuente
?: Es una condición taquigrafía para
else {}yif(){}problemas. Entonces su código es intercambiable para esto:MDN - Operador condicional (ternario)
fuente
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.
entonces
-1? "lado verdadero": "lado falso"
se evalúa como "lado verdadero"
fuente