¿Cómo puedo usar una línea if
declaración en en JavaScript? ¿Hay una else
declaración en línea también?
Algo como esto:
var a = 2;
var b = 3;
if(a < b) {
// do something
}
¿Cómo puedo usar una línea if
declaración en en JavaScript? ¿Hay una else
declaración en línea también?
Algo como esto:
var a = 2;
var b = 3;
if(a < b) {
// do something
}
Respuestas:
No necesariamente necesitas jQuery. JavaScript solo hará esto.
var a = 2;
var b = 3;
var c = ((a < b) ? 'minor' : 'major');
La c
variable 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
if (a < b) c = 'major';
Para escribir una if
declaración en línea, el código dentro de ella solo debe ser una declaración:
if ( a < b ) // code to be executed without curly braces;
Hay un operador ternario, como este:
var c = (a < b) ? "a is less than b" : "a is not less than b";
0 < 1 : 5 : 120;
es una declaración perfectamente válida. Sin embargo, un poco inútil a menos que le paguen por línea.
if
declaración en tal caso probablemente hará que su código sea mucho más fácil de leer y comprender, y menos probable que se rompa con los cambios posteriores.
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, ya que debes saber que el valor de b
se evaluará como verdadero, de lo contrario siempre lo obtendrás c
. Básicamente, debes darte cuenta de que la parte que aparecerá 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, 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 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, en comparación 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 a
y b
ambos fueran ciertos. También puede lograr condiciones complejas más simplificadas con los operadores lógicos, que pueden volverse bastante desordenados mediante operaciones ternarias anidadas ... de nuevo, si desea que su código sea fácilmente legible, ninguno de los dos es realmente tan intuitivo.
En inglés simple, 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;
condition ? true
true
false
y ""
todo debería estar bien para ignorar la parte else.
2 == 2 ? doSomething()
sería lo mismo que if (2 == 2) doSomething()
?
: false
o : ""
debería estar allí, ya que JavaScript espera esto.
Para su información, puede componer operadores condicionales
var a = (truthy) ? 1 : (falsy) ? 2 : 3;
Si su lógica es lo 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.
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).
en línea si:
(('hypothesis') ? 'truthy conclusion' : 'falsey conclusion')
conclusión verdadera: declaraciones ejecutadas cuando la hipótesis es verdadera
conclusión falsey: declaraciones ejecutadas cuando la hipótesis es falsa
tu ejemplo:
var c = ((a < b) ? 'a<b statements' : '!(a<b) statements');