me encontre con la siguiente linea
hsb.s = max != 0 ? 255 * delta / max : 0;
Qué ?
y :
quiere decir en este contexto?
Inaimati
me encontre con la siguiente linea
hsb.s = max != 0 ? 255 * delta / max : 0;
Qué ?
y :
quiere decir en este contexto?
greg
se llama el Operador Condicional (el cual es un operador ternario).
Tiene la forma de: condition
? value-if-true
: value-if-false
Pensar en ?
como “entonces” y :
como “más”.
Su código es equivalente a
if (max != 0)
hsb.s = 255 * delta / max;
else
hsb.s = 0;
“?” no es el operador ternario; “? :” es el operador ternario. Hablando sobre “?” como el operador ternario es como hablar de Abbott sin Costello, Laurel sin Hardy, Cheech sin Chong….
– Jason S.
20 de noviembre de 2009 a las 17:11
Ok, ok… ahora estoy usando un pronombre ambiguo, ¿feliz? 🙂
– Greg
20 de noviembre de 2009 a las 17:16
Para ser pedante, es a operador ternario, que resulta ser el único en la mayoría de los lenguajes de programación. Cualquier operador que trabaje en 3 partes es un operador ternario, al igual que addition
es un operador binario que opera en las expresiones anterior y siguiente (p. ej., 1+2, el más opera en 1 y 2), o la negación es un operador unario (p. ej., -x donde se niega el valor de x).
– Davy8
15 de agosto de 2011 a las 18:56
@ Davy8: Y este puede llamarse operador condicional para ser específico.
– Caracol mecánico
14 de agosto de 2012 a las 1:02
¿Qué pasaría si quisiera verificar dos condiciones?
– Thanos Dodd
12 de abril de 2020 a las 7:49
Correctamente entre paréntesis para mayor claridad, es
hsb.s = (max != 0) ? (255 * delta / max) : 0;
lo que significa volver
255*delta/max
si máx != 00
si máx == 0Esto es probablemente un poco más claro cuando se escribe con corchetes 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 del ? y antes de que se devuelva :. Si es falso, se devuelve lo que sigue al :.
caffgeek
hsb.s = max != 0 ? 255 * delta / max : 0;
?
es un operador ternario. funciona como un if
en conjunción con la :
!=
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;
}
?: es una condición abreviada para else {}
y if(){}
problemas. Entonces su código es intercambiable con esto:
if(max != 0){
hsb.s = 225 * delta / max
}
else {
hsb.s = 0
}
jldupont
? :
¿No es este el operador ternario?
var x= expression ? true:false
Calavera
A lo que te refieres se le llama operador ternarioes esencialmente un básico if
Comprobación de condición que se puede escribir para ejecutar una operación si el bloque de código dentro de la operación ternaria es válido; de lo contrario, el valor predeterminado es un respaldo.
Una operación ternaria se escribe con la siguiente sintaxis:
condition ? exprIfTrue : exprIfFalse
condition
Una expresión cuyo valor se utiliza como condición.exprIfTrue
Una expresión que se evalúa si la condición se evalúa como veraz valor (uno que es igual o se puede convertir en verdadero).exprIfFalse
Una expresión que se ejecuta si la condición es falso (es decir, tiene un valor que se puede convertir en falso).Tome la función dada a continuación que debería devolver la cadena Yes
si el número proporcionado a la función es par, de lo contrario, devuelve No
.
function isEven(num) {
return (num % 2 == 0) ? "Yes" : "No";
}
console.log("2: " + isEven(2));
console.log("3: " + isEven(3));
La operación anterior desglosada:
(num % 2 == 0)
| este es un sencillo if
condición de declaración para verificar si la expresión entre paréntesis es verdadera.? "Yes"
Si la operación es verdadera, el literal de cadena proporcionado se devuelve automáticamente como resultado de esta ejecución.: "No"
Este es el else
cláusula en esta operación, si la condición no se cumple entonces No
es regresado.