¿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
}
¿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
}
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
Ilustra cómo utilizar un IF en línea, que responde a la pregunta EXACTAMENTE. – MattW
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. –
@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
Uhm, si usted quiere decir en JavaScript entonces se podría hacer como esto:
a < b ? /*do something*/ : /*do something else*/;
Me gusta esta respuesta. simple y al punto – shlomia
Hay un operador ternario, como esto:
var c = (a < b) ? "a is less than b" : "a is not less than b";
. En realidad, no tiene que asignarse a nada. Los elementos del lado derecho pueden ser simplemente llamadas a funciones. – jfriend00
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
Ok, @ jfriend00, minitech, gracias por los consejos. –
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;
<div id="ABLAHALAHOO">8008</div>
<div id="WABOOLAWADO">1110</div>
parseInt($('#ABLAHALAHOO').text()) > parseInt($('#WABOOLAWADO).text()) ? alert('Eat potato') : alert('You starve');
Ni siquiera sé lo que acabo de leer, pero me río bastante. – Jazz
eso es tan gracioso +1 –
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;
¿Es posible hacer esto sin la declaración "else"? es decir, 'condición? true' –
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";
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.
Thumb up para la idea sin usar 'if .. else ..'. http://qr.ae/RwmrBb –
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.
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.)
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.
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));
¿Dónde está la jQuery aquí? Y realmente no entiendo la pregunta de todos modos. – Marc
parte jquery podría ser como esto $ (document) ready (function() { var a = 2; var b = 3; si (a algo takeItEasy
es una pregunta nociva también –