2010-10-13 9 views
2

Peut-être que c'est une question stupide, mais y a-t-il un moyen de revenir en haut d'une boucle?comment retourner au début de la boucle en javascript

Exemple:

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

    if(i == 3) 
     return; 

    alert(i); 
} 

Qu'est-ce que vous attendez dans d'autres langues que l'alerte déclencherait 4 fois comme ceci:

alerte (0); alerte (1); alerte (2); alerte (4);

mais à la place, la fonction est immédiatement désactivée lorsque i est 3. Qu'est-ce qui donne?

+3

Pourriez-vous donner un exemple d '«autres langues»? –

+0

À quelles langues pensez-vous où retourner au milieu d'une boucle fait que la boucle continue? Ce n'est pas le cas dans toutes les langues que je connais. – Chuck

+1

C# ne poursuit pas la boucle - une fois que vous avez exécuté l'instruction 'return', la fonction se ferme immédiatement, comme dans le javascript. C# utilise également l'instruction 'continue' pour le flux d'exécution que vous essayez d'accomplir. – JeremyDWill

Répondre

17

Utilisez continue au lieu de return.

Exemple:http://jsfiddle.net/TYLgJ/

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

    if(i == 3) 
     continue; 

    alert(i); 
} 

Si vous voulez arrêter complètement la boucle à ce moment-là, vous utiliseriez break au lieu de return. L'instruction return est utilisée pour renvoyer une valeur d'une fonction en cours d'exécution.

EDIT: Liens de documentation fournis par @epascarello les commentaires ci-dessous.

+0

aha! Merci beaucoup Patrick. – Darcy

+1

continuer: https://developer.mozilla.org/fr/JavaScript/Reference/Statements/continue retour: https://developer.mozilla.org/fr/JavaScript/Reference/Statements/return – epascarello

+0

@epascarello - Merci pour ajouter les références. : o) – user113716

5

Pour ce que ça vaut la peine, vous pouvez aussi les étiqueter:

OUTER_LOOP: for (var o = 0; o < 3; o++) { 
    INNER_LOOP: for (var i = 0; i < 3; i++) { 
    if (o && i) { 
     continue OUTER_LOOP; 
    } 
    console.info(o, ':', i); 
    } 
} 

sorties:

0 : 0 
0 : 1 
0 : 2 
1 : 0 
2 : 0 
Questions connexes