¿Alguien sabe que significa esto en JavaScript? especificamente el ?
y :
n = self.isUploadable ? fileStack.length : numFiles,
¿Alguien sabe que significa esto en JavaScript? especificamente el ?
y :
n = self.isUploadable ? fileStack.length : numFiles,
Que es una forma más corta de la estructura "if else".
Por ejemplo
var result = 6%2==0 ? "Even" : "Odd";
Es lo mismo que
if(6%2==0){
result = "Even";
}
else{
result = "Odd";
}
por lo que en tu ejemplo
if(self.isUploadable){
n = fileStack.length;
}
else{
n = numFiles;
}
Esa sintáxis es de JavaScript y corresponde al operador ternario:
condicion ? expresion1 : expresion2
Ejemplos:
> var mayor = 4 > 5 ? "Si" : "No";
> mayor
"No"
> var mayor = 100000 > 0 ? true : false;
> mayor
true
> var mayor = array1.length > array2.length ? hacerAlgo() : hacerOtraCosa();
Ten en cuenta que en el último ejemplo tanto hacerAlgo()
y hacerOtraCosa()
deberían retornar algo que tenga sentido según el contexto bajo el cual estás trabajando.
Dado que los operadores ternarios son expresiones en JavaScript, es posible usarlos de esta forma, por ejemplo:
> var masculino = false;
> var saludo = "Hola " + (masculino ? "chico" : "chica") + ", ¿cómo estás?";
> saludo
"Hola chica, ¿cómo estás?"
Su contraparte usando la sentencia if {} else {}
sería:
var masculino = false;
var saludo = "Hola ";
if (masculino) {
saludo += "chico";
} else {
saludo += "chica";
}
saludo += ", ¿cómo estás?";
Si, te ahorras algunas líneas de código.
Repondiendo tus preguntas, ?
simplemente evalúa la condición que está a la izquierda y :
es simplemente el separador entre las expresiones que son evaluadas según el resultado de la condición.
No confundir operador ternario con el operador Elvis.
Si se diera el caso de que isUploadable
es true
solo cuando fileStack
contenga datos, entonces esto también te serviría
n = fileStack.length || numFiles;
Recuerda que:
null
undefined
false
0
''
(string empty)son false
para JavaScript.
Es un if else se puede usar tanto en javascript como en PHP
$variable = ($var_1 == $var_2 )?valor si es cierto:valor si es falso;