Je sais que c'est une vieille question mais je n'ai pas vu de réponse qui clarifie pourquoi et quand il est possible de rompre avec le retour.
Je voudrais l'expliquer à l'aide de deux exemples simples :
1. Exemple : Dans ce cas, nous avons une itération simple et nous voulons rompre avec le retour de true, si nous pouvons trouver les trois.
function canFindThree() {
for(var i = 0; i < 5; i++) {
if(i === 3) {
return true;
}
}
}
si nous appelons cette fonction, elle retournera simplement le vrai.
2. Exemple Dans ce cas, nous voulons itérer avec l'outil jquery chaque fonction qui prend la fonction anonyme comme paramètre.
function canFindThree() {
var result = false;
$.each([1, 2, 3, 4, 5], function(key, value) {
if(value === 3) {
result = true;
return false; //This will only exit the anonymous function and stop the iteration immediatelly.
}
});
return result; //This will exit the function with return true;
}
15 votes
Pour la postérité : pourquoi l'auteur de la question a-t-il dit que retourner false ne fonctionnait pas ? Pratiquement toutes les réponses disent qu'il faut le faire. Je me demandais si c'était possible parce que cela ne mettait fin qu'à la boucle each. Une déclaration de retour à l'intérieur d'une boucle for, par contre, serait sortir de la boucle et la fonction d'appel . Pour obtenir un comportement aussi radical d'un each-loop, il faudrait définir un drapeau avec une portée de fermeture à l'intérieur du each-loop, puis répondre au drapeau à l'extérieur de celui-ci.
10 votes
@BobStein-VisiBone Quelqu'un a supprimé mon commentaire original. J'ai mis le
return false
au mauvais endroit. Quand je l'ai réparé, tout a fonctionné.1 votes
Je ne sais pas pourquoi la "mise à jour" dit
return false
ne fonctionne pas avec$().each
- parce que c'est le cas.3 votes
@Luke101 vous devriez mettre à jour la question pour préciser ce qui ne fonctionnait pas. Cette question/réponse n'a aucun sens lorsque votre question indique que la réponse acceptée ne fonctionne pas.
0 votes
@Luke101 pouvez-vous s'il vous plaît mettre à jour cette question. Elle est toujours pertinente après toutes ces années, et elle figure en tête des résultats de Google !
1 votes
@daprezjer Comment voulez-vous que la question soit modifiée ? Je vais la modifier mais je ne suis pas sûr de ce qui sera approprié.
0 votes
C'est ça ! Merci.