47 votes

javascript sortie de la boucle sans retour

J'ai une boucle que je veux quitter; comme ça:

 function MyFunction() {

  for (var i = 0; i < SomeCondition; i++) {

     if (i === SomeOtherCondition) {

        // Do some work here
        return false;
     }
  }

  SomeOtherFunction();
  SomeOtherFunction2();
}
 

Le problème est qu'après l'exécution des instructions Do some work here , je veux quitter la boucle for mais toujours exécuter les SomeOtherFunctions();

L'instruction return false quitte la boucle for mais elle quitte également la fonction entière. Comment puis-je réparer ça?

Merci.

92voto

SLaks Points 391154

Vous recherchez la déclaration break .

13voto

Chris Gessler Points 11887

Utilisez une instruction break ou continue

 function MyFunction() { 
  for (var i = 0; i < SomeCondition; i++) { 

     if (i === SomeOtherCondition) { 

        // Do some work here 
        break;
     } 
  } 

  SomeOtherFunction(); 
  SomeOtherFunction2(); 
} 
 

Ou pour continuer à traiter les articles, sauf ceux en état

 function MyFunction() { 
  for (var i = 0; i < SomeCondition; i++) { 

     if (i != SomeOtherCondition) continue;

     // Do some work here 
  } 

  SomeOtherFunction(); 
  SomeOtherFunction2(); 
} 
 

7voto

Spudley Points 85371

Plusieurs personnes ont offert break que la solution, et c'est en effet la meilleure réponse à la question.

Cependant, juste pour être complet, je me dois également ajouter que la question pourrait être répondu, tout en conservant l' return déclaration, en enveloppant le contenu de l' if() condition dans une fonction de clôture:

function MyFunction() {

  for (var i = 0; i < SomeCondition; i++) {

     if (i === SomeOtherCondition) {
        function() {
           // Do some work here
           return false;
        }();
     }
  }

  SomeOtherFunction();
  SomeOtherFunction2();
}

Comme je l'ai dit, break est probablement une meilleure solution dans ce cas, comme c'est la réponse directe à la question et de la fermeture n'a introduire des facteurs supplémentaires (telles que la modification de la valeur de this, limitant la portée des variables introduites à l'intérieur de la fonction, etc). Mais il est utile de proposer une solution, parce que c'est une technique utile pour apprendre, si pas nécessairement à être utilisés dans cette circonstance particulière, alors certainement pour l'avenir.

5voto

Erik Häggqvist Points 31

Break - rompt toute la boucle. Continuer - saute une étape dans une boucle. Il saute donc le code ci-dessous continue;

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