sentencia - if javascript varias condiciones
Omitir la segunda expresión cuando se usa la abreviatura if-else (7)
Esta es también una opción:
x==2 && dosomething();
dosomething()
solo se llamará si x==2
se evalúa como verdadero. Esto se llama Short-circuiting .
No se usa comúnmente en casos como este y realmente no deberías escribir código como este. Fomento este enfoque más sencillo:
if(x==2) dosomething();
Debe escribir código legible en todo momento; Si está preocupado por el tamaño del archivo, simplemente cree una versión reducida con ayuda de uno de los muchos compresores JS. (por ejemplo, el compilador de cierre de Google)
¿Puedo escribir la taquigrafía de ''si más'' sin el resto?
var x=1;
x==2 ? dosomething() : doNothingButContinueCode();
He notado que poner null
para el otro trabajo funciona (pero no tengo idea de por qué o si es una buena idea).
Edit: Algunos de ustedes parecen desconcertados por lo que me molestaría en intentar esto. Tenga la seguridad de que es simplemente por curiosidad. Me gusta jugar con JavaScript.
Lo que tienes es un uso bastante inusual del operador ternario . Generalmente se usa como una expresión, no como una declaración, dentro de alguna otra operación, por ejemplo:
var y = (x == 2 ? "yes" : "no");
Por lo tanto, para facilitar la lectura (porque lo que estás haciendo es inusual) y porque evita el "otro" que no deseas, sugeriría:
if (x==2) doSomething();
Otra opción:
x === 2 ? doSomething() : void 0;
Si no estás haciendo otra cosa, ¿por qué no?
if (x==2) doSomething();
Técnicamente, poner nulo o 0, o simplemente algún valor aleatorio funciona (ya que no está utilizando el valor de retorno). Sin embargo, ¿por qué estás usando esta construcción en lugar de la construcción if
? Es menos obvio lo que intenta hacer cuando escribe código de esta manera, ya que puede confundir a las personas con la no-op (nula en su caso).
Una pequeña adición a este hilo muy, muy viejo ..
Digamos que estás dentro de un bucle for
y necesitas evaluar una variable para un valor truthy/falsy
con un operador ternario, mientras que en caso de que quieras continue
, tendrás un problema porque no devolverás una expresión . devuelve en cambio una declaración sin ningún valor.
Esto producirá un Uncaught SyntaxError: Unexpected token continue
for (var i = 0; i < myArray.length; i++) {
myArray[i].value ? alert(''yay'') : continue;
}
Por lo tanto, si desea devolver una declaración y aún usa una línea para su código, aunque a primera vista puede parecer un poco extraño y puede que no siga un uso estricto del idioma, puede hacer esto en su lugar:
for (var i = 0; i < myArray.length; i++) {
if (myArray[i].value) alert(''yay'') ; else continue;
}
- PD: este código puede ser difícil de leer o entender, por lo que no siempre será la mejor opción para usar. Solo digo.. :)
Usar null
está bien para una de las ramas de una expresión ternaria. Y una expresión ternaria está bien como una declaración en Javascript.
Sin embargo, como cuestión de estilo, si tienes en mente invocar un procedimiento, es más claro escribirlo usando if ... else:
if (x==2) doSomething;
else doSomethingElse
o, en su caso,
if (x==2) doSomething;