Raccourci if / else déclaration Javascript
Je me demande s'il y a 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 d'aller à ce sujet?
5 réponses
var x = y !== undefined ? y : 1;
Notez que {[2] } affecterait 1
pour tout cas où y
est faux (par exemple false
, 0
, ""
), ce qui peut être la raison pour laquelle cela "n'a pas fonctionné" pour vous. En outre, si y
est une variable globale, si elle n'est vraiment pas définie, vous pouvez rencontrer une erreur sauf si vous y accédez en tant que window.y
.
, Comme vol7ron suggère dans les commentaires, vous pouvez aussi utiliser typeof
pour éviter la nécessité de consulter les variables globales comme 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 simplement parce que je pense que c'est plus facile à lire de cette façon.
Autre manière que ternaire, en utilisant un court-circuit:
typeof y !== 'undefined' && y || 1
Bien que je pense toujours ternaire plus lisible...
Voici une façon de le faire qui fonctionne, mais peut ne pas être la meilleure pratique pour n'importe quelle langue:
var x,y;
x='something';
y=1;
undefined === y || (x = y);
Sinon
undefined !== y && (x = y);