В книге Javascript: The Good Parts от Douglas Crockford, это все, что автор должен сказать о продолжении заявления:
Оператор
continue
перескакивает в начало цикла. Я никогда не видел код, который не был улучшен путем реорганизации его, чтобы удалить операторcontinue
.
Это действительно смущает меня. Я знаю, что у Крокфорда есть некоторые очень упрямые взгляды на JavaScript, но это просто звучит совершенно неправильно для меня.
Прежде всего, continue
делает больше, чем просто прыгает в начало цикла. По умолчанию он также переходит к следующей итерации. Таким образом, утверждение Крокфорда не является полностью ложной информацией?
Что еще более важно, я не совсем понимаю, почему continue
можно считать даже плохим. Этот пост дает то, что, по-видимому, является общим предположением:
Почему в цикле продолжается плохая идея?
Хотя я понимаю, как continue
может сделать код трудным для чтения в определенных случаях, я думаю, что он также может сделать код более читаемым. Например:
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);
}
}
}
Это может быть реорганизовано в:
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
не особенно полезен в этом конкретном примере, но он демонстрирует тот факт, что он уменьшает глубину вложенности. В более сложном коде это может повысить удобочитаемость.
Крокфорд не дает объяснений относительно того, почему continue
не следует использовать, так ли какое-то более глубокое значение для этого мнения, что я не хватает?