JavaScript alternativa si [duplicado]
-
18-09-2019 - |
Pregunta
Esta pregunta ya tiene una respuesta aquí:
- Signo de interrogación y de colon en JavaScript 7 respuestas
¿Qué dice este fragmento de código representa? Sé que es una especie de sintaxis alternativa if
...
pattern.Gotoccurance.score != null ? pattern.Gotoccurance.score : '0'
Actualización:
¿Cuál es la necesidad de este tipo de codificación? Esto es más eficiente o simplemente una versión abreviada con la misma eficacia?
Solución
Es la condicional operador, que es equivalente a algo de esta manera:
if (pattern.Gotoccurance.score != null) {
pattern.Gotoccurance.score;
} else {
'0';
}
Pero creo que una sentencia de asignación no se encuentra en el código que envió, así:
var score = pattern.Gotoccurance.score !=null ? pattern.Gotoccurance.score : '0';
Se asignará La variable score
si pattern.Gotoccurance.score
no es nulo:
var score;
if (pattern.Gotoccurance.score != null) {
score = pattern.Gotoccurance.score;
} else {
score = '0';
}
Un modelo común de hacer este tipo de tareas 'valor predeterminado' en JavaScript es utilizar el operador lógico OR (||
):
var score = pattern.Gotoccurance.score || '0';
El valor de pattern.Gotoccurance.score
será asignado a la variable score
sólo si ese valor no es Falsy (valores Falsy son false
, null
, undefined
, 0
, cadena de longitud cero o NaN
).
De lo contrario, si se trata de le asignará '0'
Falsy.
Actualización: La actuación será equivalente, usted debe centrarse en la legibilidad, trato de utilizar el operador ternario en las expresiones que son muy simples, y también puede mejorar el formato, dividirla en las dos líneas para que sea más legible:
var status = (age >= 18) ? "adult"
: "minor";
pregunta relacionada:
Otros consejos
Se llama el operador ternario.
En respuesta a la actualización pregunta "¿Por qué la necesidad de este tipo de codificación?"
A veces se puede utilizar el operador ternario para reducir la complejidad:
Por ejemplo, tengo una página web que necesita para verificar que al menos dos de los tres campos de texto específicos habían entrado en valores. La lógica if / else se ve bastante feo, pero el operador ternario lo hizo una sola línea para determinar cuántos campos se llenaron en:
var numberFilledInFields = ( (firstName.length > 0 ? 1 : 0) +
(lastName.length > 0 ? 1 : 0) +
(zipCode.length > 0 ? 1 : 0) );
if (numberFilledInFields < 2)
{
validation = false;
return;
}
Esta solución parece muy elegante y fácil de leer que algunas alternativas.
Es ternario operador / operador condicional.
En matemáticas, un operación ternaria es una operación n-aria con n = 3. una operación ternaria en un conjunto a toma cualquiera de los tres elementos dados de a y las combina para formar un único elemento de a.
es una forma abreviada de if..else
por ejemplo. que desee saber si un número es par o no
// Aplicando un enfoque de if..else
function CheckEvenOdd()
{
var number = 2;
if(number %2 == 0) alert("even");else alert("odd");
}
// usando ternario
function CheckEvenOdd()
{
var number = 2;
alert((number %2 == 0)?"even":"odd");
}
Una variante más es interruptor
// usando el interruptor
function CheckEvenOdd()
{
var number = 2;
switch(number %2)
{
case 0:alert("even");break;
default:alert("odd");break;
}
}
Ahora, si usted tiene una condición if..else fácil de realizar como la descrita, puede seguir adelante con ternaria.
Pero si la comprobación condicional se vuelve compleja, ya sea ir con if..else o switch como la legibilidad se perderá en ternaria
por ejemplo. es fácil de realizar mínimo o máximo de dos números utilizando un operador ternario, pero se vuelve torpe para encontrar la más grande y la segunda más grande entre 3 o más números y ni siquiera se recommmended. Es mejor utilizar if..else lugar