2012-02-10 15 views
12

Estoy tratando de usar esto y parece que no funciona. Supongo que simplemente no es una opción, pero quiero confirmarlo. Es esto valido?¿Puedo omitir el resto en una declaración javascript en línea?

(if_it_is) ? thats_cool(); 
+0

No, no es opcional. Use un operador binario en su lugar (&&) siempre que 'thats_cool()' devuelva un valor que se evalúe como 'verdadero'. –

+0

No. Necesita tener ':' y algún valor siguiéndolo. Si lo desea, puede crear una función llamada 'do_nothing()' que ... bueno, no hace nada. – Edwin

+1

user1048967, que se llama 'if() {}'. – Dykam

Respuesta

23

Puede utilizar && allí:

if_it_is && thats_cool(); 

Es básicamente igual a:

if (your_expression){ 
    thats_cool(); 
} 
+0

Agradable. Puedes hacer una coalescencia nula con o. var variable2 = variable1 || 'coalesceVal'; – Jason

+0

esto es inteligente, pero no me parece muy intuitivo. No lee bien. Un signo de interrogación, entiendo. Eso no. – evan

+0

@ user1048967: Las personas que vienen de otros idiomas lo encuentran difícil, pero esto es en realidad la belleza y la precisión de javascript que necesita para aprender. Al principio, con un aspecto extraño para todos, como yo mismo, estaba confundido, pero ahora lo estoy usando con eficacia. – Sarfraz

1

No se puede lograr que el uso del operador ternario, pero puedo uso la naturaleza de cortocircuito de && para hacer lo que quiera.

(if_it_is) && thats_cool(); 
0

No, no puede. ?: es un operador ternario y DEBE tener los tres de sus operandos.

1

No, no puedes. No es una "declaración if en línea", es el operador ternario , y eso es, bueno ... ternario.

(if_it_is) ? thats_cool() : null; 

Ya que no parecen estar interesados ​​en el valor de retorno de la operación, usted podría escribir:

if (if_it_is) thats_cool(); 

sin embargo. Eso también sería mejor estilo que usar un ternario.

0

Olvida el tercer componente. Debería ser algo así:

(if_it_is) ? thats_cool() : not_too_cool(); 

El todo sentido es:

condition ? do_something_if_condition_is_true : do_something_if_condition_is_false; 
4

No, no es válido.

El operador condicional toma la forma x ? y : z. El tercer operando no es como el else en un if, siempre tiene que estar allí.

1

Lo que intentas usar es un Ternary Operator. Te estás perdiendo la parte más de eso.

Se podría hacer algo como:

(if_it_is) ? thats_cool() : function(){}; 

o

(if_it_is) ? thats_cool() : null; 

O, como otros han sugerido, puede evitar el ternario si no se preocupan por la otra.

if_it_is && thats_cool(); 

En JavaScript, así como en la mayoría de los idiomas, estas comprobaciones lógicas pasan de izquierda a derecha. Por lo tanto, primero verá si if_it_is es 'trusy' value (true, 1, una cadena que no sea '', etc.). Si eso no pasa, entonces no hace el resto de la declaración. Si pasa, ejecutará thats_cool como la siguiente verificación en la lógica.

Piense en ello como la parte dentro de una declaración if. Sin el si. Así que es una especie de taquigrafía de

if (if_it_is && thats_cool()) { } 
Cuestiones relacionadas