Signo de interrogación y dos puntos en JavaScript

3 minutos de lectura

Signo de interrogacion y dos puntos en JavaScript
Inaimati

me encontre con la siguiente linea

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

Qué ? y : quiere decir en este contexto?

1646966888 23 Signo de interrogacion y dos puntos en JavaScript
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 != 0
  • 0 si máx == 0

Esto 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 :.

Signo de interrogacion y dos puntos en JavaScript
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
}

MDN – Operador condicional (ternario)

1646966889 686 Signo de interrogacion y dos puntos en JavaScript
jldupont

? : ¿No es este el operador ternario?

var x= expression ? true:false

1646966890 983 Signo de interrogacion y dos puntos en JavaScript
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).

Ejemplo

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));

Explicación

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.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad