Équivalent à 'exit for' ?

Le
David BERCOT
Bonjour,

J'ai encore un petit souci dans un traitement.
Au milieu d'une boucle "for" (par exemple for (i=0, i < 10, i++)), je
voudrais sortir brutalement.
En effet, si par exemple, quand i=4, je trouve une condition qui ne
nécessite pas d'aller plus loin, je préfère ne pas tester les valeurs
suivantes. Dans certaines langages, on peut donc faire un 'exit for'.
Apparemment, ce n'est pas possible en JavaScript. Si jamais je mets
i=10, je suppose que je vais sortir mais je perdrais alors la valeur
réelle de sortie de boucle
Petite question liée : si ceci se produit dans une fonction qui doit
retourner true ou false et si je fais un return false (mais je suppose
que c'est pareil avec true), est-ce que le reste de la fonction
continue à s'exécuter ? Et donc, si jamais j'ai un appel ultérieur
inconditionnel à return true, je suppose que je perds le bénéfice de
mon return false ?

Merci d'avance.

David [qui espère avoir été clair dans ses explications ;-)]
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Bruno Desthuilliers
Le #757432
Bonjour,

J'ai encore un petit souci dans un traitement.
Au milieu d'une boucle "for" (par exemple for (i=0, i < 10, i++)), je
voudrais sortir brutalement.
En effet, si par exemple, quand i=4, je trouve une condition qui ne
nécessite pas d'aller plus loin, je préfère ne pas tester les valeurs
suivantes. Dans certaines langages, on peut donc faire un 'exit for'.
Apparemment, ce n'est pas possible en JavaScript.


Si, bien sur. Essaie avec 'break':

var res=-1

for (var i = 0; i < 10; i++) {
if (i > 5) {
res = i;
break;
}
}

alert("res : " + res +"ni : " + i);


Si jamais je mets
i, je suppose que je vais sortir mais je perdrais alors la valeur
réelle de sortie de boucle...
Petite question liée : si ceci se produit dans une fonction qui doit
retourner true ou false et si je fais un return false (mais je suppose
que c'est pareil avec true), est-ce que le reste de la fonction
continue à s'exécuter ?


A ton avis ?-)

Dans la plupart des langages que je connais, l'instruction 'return'
stoppe l'execution de la fonction...

David BERCOT
Le #757431
On 13 sep, 11:57, Bruno Desthuilliers <bruno.
wrote:

Bonjour,

J'ai encore un petit souci dans un traitement.
Au milieu d'une boucle "for" (par exemple for (i=0, i < 10, i++)), je
voudrais sortir brutalement.
En effet, si par exemple, quand i=4, je trouve une condition qui ne
nécessite pas d'aller plus loin, je préfère ne pas tester les val eurs
suivantes. Dans certaines langages, on peut donc faire un 'exit for'.
Apparemment, ce n'est pas possible en JavaScript.


Si, bien sur. Essaie avec 'break':

var res=-1

for (var i = 0; i < 10; i++) {
if (i > 5) {
res = i;
break;
}

}

alert("res : " + res +"ni : " + i);

Si jamais je mets
i, je suppose que je vais sortir mais je perdrais alors la valeur
réelle de sortie de boucle...
Petite question liée : si ceci se produit dans une fonction qui doit
retourner true ou false et si je fais un return false (mais je suppose
que c'est pareil avec true), est-ce que le reste de la fonction
continue à s'exécuter ?


A ton avis ?-)

Dans la plupart des langages que je connais, l'instruction 'return'
stoppe l'execution de la fonction...


Merci beaucoup. Réponses extrêmement claires ;-)

David.


Cenekemoi
Le #757430
Bonjour à Bruno Desthuilliers
Bonjour,

J'ai encore un petit souci dans un traitement.
Au milieu d'une boucle "for" (par exemple for (i=0, i < 10, i++)), je
voudrais sortir brutalement.
En effet, si par exemple, quand i=4, je trouve une condition qui ne
nécessite pas d'aller plus loin, je préfère ne pas tester les valeurs
suivantes. Dans certaines langages, on peut donc faire un 'exit for'.
Apparemment, ce n'est pas possible en JavaScript.


Si, bien sur. Essaie avec 'break':

var res=-1

for (var i = 0; i < 10; i++) {
if (i > 5) {
res = i;
break;
}
}

alert("res : " + res +"ni : " + i);


Juste pour compléter cette réponse, on peut également sortir d'une
boucle "for" imbriquée dans une autre avec un "label", ie:

label1: for (var i = 0; i < 10; i++) {
for (var j = 0; j < 10; j++) {
if (j > 5) {
resi = i; resj = j;
break label1;
}
}
}

Si j > 5, on sort alors des deux boucles "for"...

--
Cordialement, Thierry ;-)


Publicité
Poster une réponse
Anonyme