Je me demande s'il existe un moyen plus court d'écrire ceci:
var x = 1;
if(y != undefined) x = y;
J'ai d'abord essayé x = y || 1
, mais cela n'a pas fonctionné. Quelle est la bonne façon de s'y prendre?
var x = y !== undefined ? y : 1;
Notez que var x = y || 1;
attribuerait 1
dans tous les cas où y
est une fausseté (par exemple, false
, 0
, ""
), ce qui peut expliquer pourquoi cela "n'a pas fonctionné" pour vous. De plus, si y
est une variable globale, si elle n’est vraiment pas définie, vous risquez de rencontrer une erreur, à moins d’y accéder en tant que window.y
.
Comme le suggère vol7ron dans les commentaires, vous pouvez également utiliser typeof
pour éviter d'avoir à faire référence aux vars globaux en tant que window.<name>
:
var x = typeof y != "undefined" ? y : 1;
Une autre façon de l'écrire sous peu
bePlanVar = !!((bePlanVar == false));
// is equivalent to
bePlanVar = (bePlanVar == false) ? true : false;
// and
if (bePlanVar == false) {
bePlanVar = true;
} else {
bePlanVar = false;
}
y = (y != undefined) ? y : x;
Les parenthèses ne sont pas nécessaires, je les ajoute car je pense que c'est plus facile à lire de cette façon.
Voici une façon de le faire qui fonctionne, mais qui peut ne pas être une bonne pratique pour les langues
var x,y;
x='something';
y=1;
undefined === y || (x = y);
alternativement
undefined !== y && (x = y);