Omitir la segunda expresión cuando se utiliza la taquigrafía if-else

Resuelto Nikki asked hace 12 años • 8 respuestas

¿ Puedo escribir la if elsetaquigrafía sin else?

var x=1;

x==2 ? dosomething() : doNothingButContinueCode();   

He notado que poner nullpara el resto funciona (pero no tengo idea de por qué o si es una buena idea).

Editar: Algunos de ustedes parecen desconcertados por qué me molestaría en intentar esto. Tenga la seguridad de que es pura curiosidad. Me gusta jugar con JavaScript.

Nikki avatar Jun 17 '12 13:06 Nikki
Aceptado

Lo que tenemos 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");

Entonces, para facilitar la lectura (porque lo que estás haciendo es inusual) y porque evita el "más" que no deseas, sugeriría:

if (x==2) doSomething();
Nicole avatar Jun 17 '2012 06:06 Nicole

Esta también es una opción:

x==2 && dosomething();

dosomething()solo se llamará si x==2se evalúa como verdadero. Esto se llama cortocircuito .

No se usa comúnmente en casos como este y realmente no deberías escribir código como este. Recomiendo este enfoque más simple:

if(x==2) dosomething();

Debes escribir código legible en todo momento; Si le preocupa el tamaño del archivo, simplemente cree una versión minimizada con la ayuda de uno de los muchos compresores JS. (por ejemplo, el compilador de cierre de Google )

ajax333221 avatar Jun 17 '2012 06:06 ajax333221