Supposons que j'ai une boucle comme celle-ci:
for (var i = 0; i < SomeArrayOfObject.length; i++) {
if (SomeArray[i].SomeValue === SomeCondition) {
var SomeVar = SomeArray[i].SomeProperty;
return SomeVar;
}
}
Question rapide: la return
arrête-t-elle l'exécution de la boucle seule?
Oui, return
arrête l'exécution et quitte la fonction. return
toujours ** quitte sa fonction immédiatement, sans autre exécution si elle se trouve dans une boucle for.
Il se vérifie facilement pour vous-même:
function returnMe() {
for (var i=0; i<2; i++) {
if (i === 1) return i;
}
}
alert(returnMe());
// 1
** Notes: Voir cette autre réponse sur le cas particulier de try/catch/finally
et cette réponse sur la manière dont les boucles forEach ont chacune leur propre fonction fonction contenant.
Dans la plupart cas (y compris celui-ci), return
quittera immédiatement. Cependant, si le retour est dans un bloc try
avec un bloc finally
, le finally
est toujours exécuté et peut "écraser" le return
dans le try
.
function foo() {
try {
for (var i = 0; i < 10; i++) {
if (i % 3 == 0) {
return i; // This executes once
}
}
} finally {
return 42; // But this still executes
}
}
console.log(foo()); // Prints 42
L'instruction return
arrête une boucle uniquement si elle se trouve à l'intérieur de la fonction. Sinon, vous obtiendrez cette erreur:
Uncaught SyntaxError: Illegal return statement(…)
Oui, une fois que l'instruction return
est exécutée, la fonction entière est abandonnée à ce moment précis.
Imaginez simplement ce qui se passerait si ce n’était pas le cas et continuait de boucler et d’exécuter cette instruction return
à chaque fois? Cela invaliderait sa signification de retourner une valeur quand on y réfléchit.
La réponse est oui, si vous écrivez une instruction return, les contrôles retournent immédiatement à la méthode de l'appelant. À l'exception de finally block, qui est exécuté après l'instruction return.
enfin, vous pouvez également remplacer la valeur que vous avez renvoyée si vous revenez à l’intérieur de block. LIEN: Précisions sur la tentative, la capture, le retour et le retour
Définition de l'instruction de retour selon:
Java Docs:
une instruction return peut être utilisée pour sortir d'un bloc de flux de contrôle et quitter la méthode
Documentation MSDN:
L'instruction return met fin à l'exécution d'une fonction et rend le contrôle à la fonction appelante. L'exécution reprend dans la fonction appelante au point qui suit immédiatement l'appel.
Wikipédia:
Une instruction return force l'exécution à quitter le sous-programme actuel et à reprendre à l'endroit du code immédiatement après l'appel du sous-programme, appelé adresse de retour. L'adresse de retour est enregistrée, généralement sur la pile d'appels du processus, dans le cadre de l'opération d'appel du sous-programme. Les instructions de retour dans de nombreuses langues permettent à une fonction de spécifier une valeur de retour à renvoyer au code qui a appelé la fonction.
Ce code quittera la boucle après la première itération dans une boucle for of
:
const objc = [{ name: 1 }, { name: 2 }, { name: 3 }];
for (const iterator of objc) {
if (iterator.name == 2) {
return;
}
console.log(iterator.name);// 1
}
le code ci-dessous sautera sur la condition et continuera sur une boucle for of
:
const objc = [{ name: 1 }, { name: 2 }, { name: 3 }];
for (const iterator of objc) {
if (iterator.name == 2) {
continue;
}
console.log(iterator.name); // 1 , 3
}
"return" quitte la fonction, mais si vous voulez renvoyer de grandes quantités de données, vous pouvez les stocker dans un tableau, puis les renvoyer au lieu d'essayer de renvoyer chaque élément de données 1 par 1 dans la boucle.