abreviado - javascript ternary operator
Breve declaraciĆ³n if/else Javascript (5)
De otra manera que ternario, usando cortocircuito:
typeof y !== ''undefined'' && y || 1
Aunque todavía creo ternario más legible ...
Me pregunto si hay una manera más corta de escribir esto:
var x = 1;
if(y != undefined) x = y;
Inicialmente intenté x = y || 1
x = y || 1
, pero eso no funcionó. ¿Cuál es la forma correcta de hacerlo?
Esta es una forma de hacerlo que funciona, pero puede que no sea la mejor práctica para cualquier lenguaje:
var x,y;
x=''something'';
y=1;
undefined === y || (x = y);
alternativamente
undefined !== y && (x = y);
Otra forma de escribirlo en breve
bePlanVar = !!((bePlanVar == false));
// is equivalent to
bePlanVar = (bePlanVar == false) ? true : false;
// and
if (bePlanVar == false) {
bePlanVar = true;
} else {
bePlanVar = false;
}
var x = y !== undefined ? y : 1;
Tenga en cuenta que var x = y || 1;
var x = y || 1;
asignaría 1
para cualquier caso donde y
es falso (por ejemplo, false
, 0
, ""
), que puede ser el motivo por el cual "no funcionó" para usted. Además, si y
es una variable global, si realmente no está definida, es posible que se window.y
un error a menos que acceda a ella como window.y
.
Como sugiere vol7ron en los comentarios, también puede usar typeof
para evitar la necesidad de referirse a variables globales como window.<name>
:
var x = typeof y != "undefined" ? y : 1;
y = (y != undefined) ? y : x;
Los paréntesis no son necesarios, solo los agrego porque creo que es más fácil leerlos de esta manera.