Chaque exemple de if...else if
Que j'ai vu comprend une dernière clause else
:
if (condition1) {
doA();
} else if (condition2) {
doB();
} else if (condition3) {
doC();
} else {
noConditionsMet();
}
alwaysDoThis();
Je comprends qu'il s'agit essentiellement de sucre syntaxique pour les instructions imbriquées if...else
:
if (condition1) {
doA();
} else {
if (condition2) {
doB();
} else {
if (condition3) {
doC();
} else {
noConditionsMet();
}
}
}
alwaysDoThis();
Je n'ai jamais vu d'exemples de if...else if
Qui omet la dernière clause else
. Mais vu que les instructions if
simples (sans les clauses else
) sont valides, et en suivant les "instructions imbriquées" équivalentes ci-dessus, mon instinct me dit que c'est correct de le faire:
if (condition1) {
doA();
} else if (condition2) {
doB();
} else if (condition3) {
doC();
}
alwaysDoThis();
Quelqu'un peut-il m'indiquer une ressource ou un exemple qui dit explicitement si elle est valide ou non?
Et à un autre niveau, si elle est valide, serait-elle recommandée ou est-elle considérée comme une "mauvaise pratique"?
La fin else
n'est pas obligatoire. Quant à savoir si cela est nécessaire, cela dépend de ce que vous voulez réaliser.
La clause de fin else
s'exécute lorsqu'aucune des conditions spécifiées n'est vraie. Si les conditions sont garanties collectivement exhaustives , alors une clause else
est entièrement superflue, sauf éventuellement pour contenir une assertion qui attrape la condition "impossible". Dans votre cas, si vous avez besoin d'une clause else
dépend de si vous voulez que du code spécifique s'exécute si et seulement si ni condition1
, condition2
, et condition3
sont vrai.
else
peut être omis pour toute instruction if
, il n'y a rien de spécial dans la dernière if
d'un if
/else if
chaîne. Ceci est documenté dans n'importe quelle grammaire JavaScript, par ex. dans la spécification .
Vous n'avez jamais besoin d'une clause else
. (Il est difficile de donner des exemples de quelque chose qui n'est pas nécessaire, alors je vais m'en tenir là.)
modifier en tant que notes de commentaire, les crochets dans la notation de la syntaxe du langage indiquent généralement que quelque chose est facultatif.
C'est 100% valide. Non, ce n'est pas une mauvaise pratique. Si vous n'en avez pas besoin, ne l'écrivez pas.
Prenez l'exemple suivant:
function doStuff(data) {
if (data.something) {
// go format the data in some way
}
else if (data.somethingElse) {
// go format the data in some other way
}
// must be formatted correctly, don't do anything else
...
}
Pas besoin d'un bloc else, ce ne sont pas des instructions if, mais des instructions if. Considérez else, elseif comme une extension.
Voici un lien vers un fil de discussion de sitepoint: cliquez ici . Et un fil similaire sur stackoverflow: cliquez ici