Syntaxe «elseif» en JavaScript

Réponses:

507

Le elseif de JavaScript est au format "sinon si", par exemple:

if (condition) {

} else if (other_condition) {

} else {

}
Jeff
la source
28
Quand les gens posent des questions comme celle-ci, je pense que cela montre un malentendu fondamental. Avec ifet elseil n'y en a vraiment pas besoin elseif.
mpen
14
@Mark, je suis d'accord ... mais ça me dérange parfois parce que je suis habitué aux langues qui ont un elseif. Je sais que c'est identique, mais je me demande quelle est la raison de Javascript pour le laisser de côté. Je suis heureux, cependant, qu'ils n'aient pas utilisé elif, car c'est tout simplement faux :)
Jay K
16
@JayK: Haha .. PHP a elseif, perl a elsif(je pense), et Python a elif.. ce genre de chose m'a énervé au début, mais ... je suppose que c'est plutôt mignon. Il sert cependant un léger objectif en Python et PHP, car il ne fonctionnerait pas avec leur syntaxe deux-points autrement.
mpen
6
@Mark Cela montre davantage une mauvaise compréhension du bracketing. Les crochets ne sont pas nécessaires pour if/ elseblocs, mais les gens sont encouragés à les utiliser, donc je peux comprendre pourquoi cela semble incorrect pour un nouvel utilisateur.
46
@Mark Affirmer qu'il n'y a jamais de raison d'utiliser "else if" est incorrect. Sinon, si les instructions s'apparentent à l'utilisation de "switch", cela permettra toutefois des comparaisons plus élaborées. Switch, bien sûr, ne permet que des comparaisons très simples. Alors oui, il y a certainement de bonnes raisons d'utiliser sinon.
jolsen
49

Ajoutez simplement un espace:

if (...) {

} else if (...) {

} else {

}
jMyles
la source
33

Vous pouvez utiliser cette syntaxe qui est fonctionnellement équivalente:

switch (true) {
  case condition1:
     //e.g. if (condition1 === true)
     break;
  case condition2:
     //e.g. elseif (condition2 === true)
     break;
  default:
     //e.g. else
}

Cela fonctionne parce que chacun conditionest entièrement évalué avant la comparaison avec la switchvaleur, donc le premier qui s'évalue truecorrespondra et sa branche s'exécutera. Les branches suivantes ne s'exécuteront pas, à condition que vous vous en souveniezbreak .

Notez qu'une comparaison stricte est utilisée, donc une branche qui conditionest simplement "véridique" ne sera pas exécutée. Vous pouvez lancer une valeur truthy à truedouble négation: !!condition.

Tamlyn
la source
Ce n'est pas AFAIK fonctionnellement équivalent. Ce que vous pouvez mettre dans les conditions est beaucoup plus limité et switch (true)n'a même pas de sens.
zwol
2
J'avoue que ça a l'air bizarre au premier abord mais c'est équivalent. La condition peut être tout ce que vous aimez (y compris les appels de fonction ou autre) et si elle est évaluée, truece cas sera rempli - exactement comme else if.
Tamlyn
5
Oh, je vois ce que tu fais maintenant. C'est sacrément intelligent. (J'ai ajouté un paragraphe expliquant comment cela fonctionne, afin que je puisse rétracter mon downvote.)
zwol
1
Ceci est une solution très simple, propre et élégante pour les listes de conditions avec plus d'une condition "else if"
Steve Goossens
4
Pas complètement équivalent si les conditions ne renvoient pas de booléens, par exemple if([]) alert('a')produit l'alerte mais switch(true){case []:alert('a')}ne le fait pas. C'est parce que []c'est une valeur véridique mais pas égale à true, comme @zwol l'a expliqué dans cette édition .
Oriol
13

En fait, techniquement une fois correctement mis en retrait, ce serait:

if (condition) {
    ...
} else {
    if (condition) {
        ...
    } else {
        ...
    }
}

Il n'y en a pas à else ifproprement parler.

(Mise à jour: Bien sûr, comme indiqué, ce qui précède n'est pas considéré comme un bon style.)

skube
la source
1
Vous pouvez, et vous devriez, écrire ceci if (condition1) { ... } else if (condition2) { ... } else { ... }.
zwol
4
En substance, lors de l'utilisation, else ifvous omettez en fait le bloc facultatif {...}. Je faisais un référencement basé sur EMCAScript et MDN ..
skube
13
En termes de grammaire formelle de la langue, vous avez raison, mais votre réponse pourrait donner aux gens l'impression incorrecte qui else { if ... }est de bon style.
zwol
1
Ce que zwol a dit. Il y a ce que vous (skube) vouliez dire. Et puis il y a ce que vous avez dit.
Gerard ONeill
6
if ( 100 < 500 ) {
   //any action
}
else if ( 100 > 500 ){
   //any another action
}

Espace d'utilisation facile

IdemeNaHavaj
la source
2

Les instructions conditionnelles sont utilisées pour effectuer différentes actions en fonction de différentes conditions.

Utilisez ifpour spécifier un bloc de code à exécuter, si une condition spécifiée est vraie

Utilisez elsepour spécifier un bloc de code à exécuter, si la même condition est fausse

Utilisez else ifpour spécifier une nouvelle condition à tester, si la première condition est fausse

AA Noman
la source
1
x = 10;
if(x > 100 ) console.log('over 100')
else if (x > 90 ) console.log('over 90')
else if (x > 50 ) console.log('over 50')
else if (x > 9 ) console.log('over 9')
else console.log('lower 9') 
zloctb
la source
0

Il vous manque un espace entre elseetif

Ce devrait être else ifau lieu deelseif

if(condition)
{

} 
else if(condition)
{

}
else
{

}
codemirror
la source