80 votes

Arrêt d'appel dans les instructions if imbriquées

J'ai la situation suivante :

 IF condition THEN  
    IF condition THEN 
        sequence 1
    ELSE
        break //?  
    ENDIF    
ELSE    
    sequence 3    
ENDIF

Quel est le résultat de l'instruction break ? Est-ce que cela casse l'instruction if externe? Parce que c'est ce dont j'ai vraiment besoin.

201voto

user563811 Points 561

Si vous étiquetez l'instruction if, vous pouvez utiliser break.

 breakme: if (condition) {
    // Do stuff

    if (condition2){
        // do stuff
    } else {
       break breakme;
    }

    // Do more stuff
}

Vous pouvez même étiqueter et casser des blocs simples.

 breakme: {
    // Do stuff

    if (condition){
        // do stuff
    } else {
       break breakme;
    }

    // Do more stuff
}

Cependant, ce n'est pas un modèle couramment utilisé, il peut donc semer la confusion chez les gens et ne sera peut-être pas optimisé par les conformes. Il serait peut-être préférable d'utiliser une fonction et de retourner, ou de mieux organiser les conditions.

 ( function() {
   // Do stuff

   if ( condition1 ) {
       // Do stuff 
   } else {
       return;
   }

   // Do other stuff
}() );

59voto

hvgotcodes Points 55375

non ça ne marche pas. break est pour les boucles, pas pour les ifs.

imbriqué si les déclarations sont tout simplement terribles. Si vous pouvez les éviter, évitez-les. Pouvez-vous réécrire votre code pour être quelque chose comme

 if (c1 && c2) {
    //sequence 1
} else if (c3 && c2) {
   // sequence 3
}

de cette façon, vous n'avez besoin d'aucune logique de contrôle pour « sortir » de la boucle.

4voto

Robba Points 11

Mais il y a un switch-case :)

 switch (true) {
    case true:
        console.log("Yes, its ture :) Break from the switch-case");
        break;
    case false:
        console.log("Nope, but if the condition was set to false this would be used and then break");
        break;

    default:
        console.log("If all else fails");
        break;
}

3voto

Van Coding Points 5816

Dans la plupart des langues, break n'annule que les boucles comme for, while etc.

1voto

kjy112 Points 9481

Javascript lèvera une exception si vous essayez d'utiliser une break; dans un if else. Il est principalement utilisé pour les boucles. Vous pouvez "sortir" d'une instruction if else avec une condition, ce qui n'a pas de sens d'inclure une instruction "break".

JSFiddle

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X