192

¿Cómo puedo usar una declaración en línea if en JavaScript? ¿Hay una declaración en línea else también?Cómo escribir una instrucción IF en línea en JavaScript?

Algo como esto:

var a = 2; 
var b = 3; 

if(a < b) { 
    // do something 
} 
+11

¿Dónde está la jQuery aquí? Y realmente no entiendo la pregunta de todos modos. – Marc

+0

parte jquery podría ser como esto $ (document) ready (function() { var a = 2; var b = 3; si (a algo takeItEasy

+0

es una pregunta nociva también –

Respuesta

434

Usted no necesita un jQuery. JavaScript solo hará esto.

var a = 2; 
var b = 3;  
var c = ((a < b) ? 'minor' : 'major'); 

La variable c será minor si el valor es true y major si el valor es false.


Esto se conoce como operador condicional (ternario).

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Conditional_Operator

+51

Ilustra cómo utilizar un IF en línea, que responde a la pregunta EXACTAMENTE. – MattW

+17

Solo para tener en cuenta, todos los parens en este caso son opcionales. A menudo es el estilo de preferencia/codificación personal el que dicta cuándo se usan. –

+0

@WillKlein dices que todos los parens son opcionales pero cuando hago esto como() ?: en lugar de (()? :) obtengo resultados diferentes. Solo sé esto porque lo intenté como si estuviera en PHP. – khany

13

Uhm, si usted quiere decir en JavaScript entonces se podría hacer como esto:

a < b ? /*do something*/ : /*do something else*/; 
+1

Me gusta esta respuesta. simple y al punto – shlomia

31

Hay un operador ternario, como esto:

var c = (a < b) ? "a is less than b" : "a is not less than b"; 
+2

. En realidad, no tiene que asignarse a nada. Los elementos del lado derecho pueden ser simplemente llamadas a funciones. – jfriend00

+7

Ni siquiera tienen que ser llamadas a funciones ... '0 <1: 5: 120;' es una declaración perfectamente válida. Un poco inútil a menos que le paguen por línea, sin embargo. – Ryan

+0

Ok, @ jfriend00, minitech, gracias por los consejos. –

31

Para escribir if en línea comunicado, el código dentro de ellos debe ser una declaración:

if (a < b) // code to be executed without curly braces; 
15
<div id="ABLAHALAHOO">8008</div> 
<div id="WABOOLAWADO">1110</div> 

parseInt($('#ABLAHALAHOO').text()) > parseInt($('#WABOOLAWADO).text()) ? alert('Eat potato') : alert('You starve'); 
+35

Ni siquiera sé lo que acabo de leer, pero me río bastante. – Jazz

+0

eso es tan gracioso +1 –

23

En inglés sencillo, la sintaxis explicada:

if(condition){ 
    do_something_if_condition_is_met; 
} 
else{ 
    do_something_else_if_condition_is_not_met; 
} 

se puede escribir como:

condition ? do_something_if_condition_is_met : do_something_else_if_condition_is_not_met; 
+2

¿Es posible hacer esto sin la declaración "else"? es decir, 'condición? true' –

3

Para añadir a esto también se puede utilizar en línea si la condición con & & y || operadores. gusta esta

var a = 2; 
var b = 0; 

var c = (a > b || b == 0)? "do something" : "do something else"; 
19

También puede aproximar un if/else usando operadores lógicos única.

(a && b) || c 

Lo anterior es más o menos lo mismo que decir:

a ? b : c 

Y, por supuesto, más o menos lo mismo que:

if (a) { b } else { c } 

digo más o menos porque hay una diferencia con este enfoque , en eso debes saber que el valor de b se evaluará como verdadero, de lo contrario siempre obtendrás c. Básicamente debes darte cuenta de que la parte que aparecería if() { here } ahora es parte de la condición en la que colocas if (here) { }.

Lo anterior es posible debido al comportamiento de JavaScripts de pasar/devolver uno de los valores originales que formaron la expresión lógica, que depende del tipo de operador.Ciertos otros lenguajes, como PHP, llevan el resultado real de la operación, es decir, verdadero o falso, lo que significa que el resultado siempre es verdadero o falso; por ejemplo:

14 && 0   /// results as 0, not false 
14 || 0   /// results as 14, not true 
1 && 2 && 3 && 4 /// results as 4, not true 
true && ''  /// results as '' 
{} || '0'  /// results as {} 

Un beneficio principal, en comparación con una normal si declaración, es que los dos primeros métodos pueden operar en el lado derecho de un argumento es decir, como parte de una asignación.

d = (a && b) || c; 
d = a ? b : c; 

if `a == true` then `d = b` else `d = c` 

La única manera de lograr esto con un estándar sentencia if sería duplicar el assigment:

if (a) { d = b } else { d = c } 

Usted puede preguntarse por qué utilizar simplemente Logical Operators en lugar de la Ternary Operator, para los casos simples que probablemente wouldn 't, a menos que quisiera asegurarse de que a y b eran verdaderos. También puede lograr condiciones complejas más simplificadas con los operadores lógicos, que pueden ser bastante complicados usando operaciones ternarias anidadas ... luego, nuevamente si desea que su código sea fácil de leer, tampoco son tan intuitivos.

+1

Thumb up para la idea sin usar 'if .. else ..'. http://qr.ae/RwmrBb –

9

Si lo que desea es una línea IF (sin más), puede utilizar el operador lógico Y:

(a < b) && /*your code*/; 

Si necesita una más también, utilizar la operación ternaria que las otras personas sugirieron.

0

No es esencialmente la pregunta: ¿puedo escribir lo siguiente?

if (foo) 
    console.log(bar) 
else 
    console.log(foo + bar) 

la respuesta es, sí, lo anterior se traducirá.

sin embargo, tener cuidado de no hacer lo siguiente

if (foo) 
    if (bar) 
    console.log(foo) 
    else 
    console.log(bar) 
else 
    console.log(foobar) 

Asegúrese de envolver código ambiguo en los apoyos que el anterior será una excepción (y permutaciones similares producirá un comportamiento no deseado.)

2

FYI, puede componer conditional operators

var a = (truthy) ? 1 : (falsy) ? 2 : 3; 

Si la lógica es lo suficientemente complejo, entonces es posible considerar el uso de un IIFE

var a = (function() { 
    if (truthy) return 1; 
    else if (falsy) return 2; 
    return 3; 
})(); 

Por supuesto, si tiene previsto utilizar esta lógica más de una vez, entonces algo encapsular en una función de mantener las cosas agradable y seco.

2

A menudo se necesita para ejecutar código más por condición, mediante el uso de: (, ,) elementos de código pueden ejecutar múltiples:

var a = 2; 
var b = 3; 
var c = 0; 

(a < b ? (alert('hi'), a=3, b=2, c=a*b) : (alert('by'), a=4, b=10, c=a/b)); 
Cuestiones relacionadas