$('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) }) })
La mia domanda: perché avvisa ancora il prossimo numero anche se chiamo il return
? Proprio come: Ignora il codice qui sotto e continua con l’elemento successivo
Dalla rete di sviluppatori Mozilla :
Non esiste alcun modo per interrompere o interrompere un ciclo
forEach()
diverso da un’eccezione. Se hai bisogno di un simile comportamento, il metodoforEach()
è lo strumento sbagliato.La risoluzione anticipata può essere eseguita con:
- Un ciclo semplice
- A
for
…of
loopArray.prototype.every()
Array.prototype.some()
Array.prototype.find()
Array.prototype.findIndex()
Gli altri metodi Array:
every()
,some()
,find()
efindIndex()
verificano gli elementi dell’array con un predicato che restituisce un valore di verità per determinare se è necessaria un’ulteriore iterazione.
Il return
esce dalla funzione corrente , ma le iterazioni continuano, quindi ottieni la voce “next” che salta il if
e avvisa il 4 …
Se hai bisogno di interrompere il ciclo, dovresti semplicemente usare un ciclo semplice come:
$('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); }) })
Puoi leggere ulteriori informazioni su js break e continua qui: http://www.w3schools.com/js/js_break.asp