validaciones - ¿Cómo escribir una declaración IF en línea en JavaScript?
sentencia if else en c++ (12)
¿Cómo puedo usar una declaración en línea if
en JavaScript? ¿Hay una declaración de else
línea también?
Algo como esto:
var a = 2;
var b = 3;
if(a < b) {
// do something
}
¿No es la pregunta esencialmente: puedo escribir lo siguiente?
if (foo)
console.log(bar)
else
console.log(foo + bar)
La respuesta es, sí, lo anterior se traducirá.
sin embargo, tenga cuidado de hacer lo siguiente
if (foo)
if (bar)
console.log(foo)
else
console.log(bar)
else
console.log(foobar)
asegúrese de incluir código ambiguo entre llaves ya que lo anterior generará una excepción (y permutaciones similares producirán un comportamiento no deseado).
A menudo necesito ejecutar más código por condición, usando: ( , , )
,, ( , , )
múltiples elementos de código pueden ejecutar:
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 ) );
En un lenguaje sencillo, la sintaxis explicaba:
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;
Hay un operador ternario, como este:
var c = (a < b) ? "a is less than b" : "a is not less than b";
No necesariamente necesitas jQuery. Solo JavaScript 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 un operador condicional (ternario).
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Conditional_Operator
Para agregar a esto, también puede usar inline si la condición con && y || operadores Me gusta esto
var a = 2;
var b = 0;
var c = (a > b || b == 0)? "do something" : "do something else";
Para escribir if
declaración está en línea, el código que contiene debe ser solo una declaración:
if ( a < b ) // code to be executed without curly braces;
Para su información, puede componer operadores condicionales
var a = (truthy) ? 1 : (falsy) ? 2 : 3;
Si su lógica es suficientemente compleja, entonces podría considerar usar un IIFE
var a = (function () {
if (truthy) return 1;
else if (falsy) return 2;
return 3;
})();
Por supuesto, si planea usar esta lógica más de una vez, entonces debe encapsularla en una función para mantener las cosas agradables y SECAS.
Si solo desea un IF en línea (sin ELSE), puede usar el operador lógico AND:
(a < b) && /*your code*/;
Si también necesita un ELSE, use la operación ternaria que sugirieron las otras personas.
También puede aproximar un if / else utilizando solo operadores lógicos.
(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 el sentido de que 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 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, el cual depende del tipo de operador. Ciertos otros idiomas, como PHP, llevan el resultado real de la operación, es decir, verdadero o falso, lo que significa que el resultado es siempre verdadero o falso; p.ej:
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, comparado con una declaración if normal, 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 forma de lograr esto con un estándar si la declaración sería duplicar la asignación:
if ( a ) { d = b } else { d = c }
Puede preguntar por qué usar solo Operadores lógicos en lugar del Operador Ternario , para casos simples que probablemente no haría, a menos que quisiera asegurarse de que a
y b
fueran los dos verdaderos. También puede lograr condiciones complejas más simplificadas con los operadores lógicos, que pueden ensuciarse mucho utilizando operaciones ternarias anidadas ... nuevamente, si desea que su código sea fácil de leer, ninguno de los dos es realmente tan intuitivo.
Uhm, si te refieres a JavaScript, entonces podrías hacer esto:
a < b ? /*do something*/ : /*do something else*/;
<div id="ABLAHALAHOO">8008</div>
<div id="WABOOLAWADO">1110</div>
parseInt( $( ''#ABLAHALAHOO'' ).text()) > parseInt( $( ''#WABOOLAWADO ).text()) ? alert( ''Eat potato'' ) : alert( ''You starve'' );