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.