web-dev-qa-db-fra.com

Que signifie le mot-clé `return` dans la fonction` forEach`?

$('button').click(function () {
   [1, 2, 3, 4, 5].forEach(function (n) {
      if (n == 3) {
         // it should break out here and doesn't alert anything after
         return false
      }
      alert(n)      
   })
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>Click me</button>

Ma question: Pourquoi le numéro suivant est-il toujours alerté alors que j'appelle return? Juste comme: Ignorez le code ci-dessous et continuez avec l'élément suivant

90
Foo

Depuis le Mozilla Developer Network :

Il n’ya aucun moyen d’arrêter ou de casser une boucle forEach() autrement qu'en lançant une exception. Si vous avez besoin d'un tel comportement, la méthode forEach() n'est pas le bon outil.

La résiliation anticipée peut être réalisée avec:

Les autres méthodes Array: every() , some() , find() , et findIndex() tester les éléments du tableau avec un prédicat renvoyant un valeur de vérité pour déterminer si une itération supplémentaire est requise.

126
squaleLis

return quitte la fonction actuelle , mais les itérations se poursuivent, vous obtenez donc le "prochain" élément qui ignore le if et alerte le 4 ...

Si vous devez arrêter la mise en boucle, vous devez simplement utiliser une simple boucle for comme ceci:

$('button').click(function () {
   var arr = [1, 2, 3, 4, 5];
   for(var i = 0; i < arr.length; i++) {
     var n = arr[i]; 
     if (n == 3) {
         break;
      }
      alert(n);
   })
})

Vous pouvez en savoir plus sur js break & continue ici: http://www.w3schools.com/js/js_break.asp

21
Ronen Cypis