Nel libro JavaScript: le parti buone da Douglas Crockford, tutto questo è l'autore ha da dire circa l'istruzione continue:Perché le frasi "continue" sono errate in JavaScript?
La dichiarazione
continue
salta al all'inizio del ciclo. Non ho mai visto un pezzo di codice che non è stato migliorato refactoring per rimuovere l'istruzionecontinue
.
Questo mi confonde davvero. So che Crockford ha delle opinioni molto opinate su JavaScript, ma mi sembra del tutto sbagliato.
Prima di tutto, continue
fa più che saltare semplicemente all'inizio di un ciclo. Di default, progredisce anche alla successiva iterazione. Quindi la dichiarazione di Crockford non è solo un'informazione completamente falsa?
Ancora più importante, non capisco del tutto perché continue
sia considerato come cattivo. Questo post fornisce quello che sembra essere il presupposto generale: Why is continue inside a loop a bad idea?
Anche se capisco come continue
possono rendere il codice difficile da leggere in alcuni casi, penso che sia altrettanto probabile che possa rendere il codice più leggibile. Per esempio:
var someArray=['blah',5,'stuff',7];
for(var i=0;i<someArray.length;i++){
if(typeof someArray[i]==='number'){
for(var j=0;j<someArray[i];j++){
console.log(j);
}
}
}
Questo potrebbe essere riscritta in:
var someArray=['blah',5,'stuff',7];
for(var i=0;i<someArray.length;i++){
if(typeof someArray[i]!=='number'){
continue;
}
for(var j=0;j<someArray[i];j++){
console.log(j);
}
}
continue
non è particolarmente utile in questo esempio specifico, ma dimostra il fatto che esso riduce la profondità di annidamento. Nel codice più complesso, questo potrebbe aumentare la leggibilità.
Crockford non fornisce spiegazioni sul motivo per cui non si dovrebbe utilizzare continue
, quindi c'è un significato più profondo dietro questa opinione che mi manca?
La parola chiave 'continue' è uno strumento: utilizzalo laddove applicabile. Spesso è necessario, molte volte non lo è. L'unica volta che è brutto è quando non hai avuto bisogno di usarlo, ma sei stato troppo pigro o sciatto per farlo in un altro modo. – slugster
Ho avuto la stessa sensazione ed è per questo che ho fatto il mio [post] (http://stackoverflow.com/questions/30030033/continue-statement-confusion). Ciò che mi ha aiutato è solo pensare alla parola "hop" quando si usano le istruzioni continue. Penso che Mr. Crawford abbia usato una parola povera di scelta quando ha progettato la lingua: P Soprattutto perché il luppolo può applicare la logica 'continua' dietro di esso. Se salti su qualcosa, di solito continui pure. Pensa ai maratoneti come una buona analogia. –
"Mr. Crawford" non ha progettato la lingua. – rlemon