В книге Javascript: The Good Parts Дуглас Crockford, все это автор должен сказать о заявлении продолжения:Почему ошибки «продолжить» плохо в JavaScript?
continue
оператор переходит к началу цикла. Я никогда не видел фрагмент кода, который не был улучшен путем реорганизации его, чтобы удалить операторcontinue
.
Это действительно смущает меня. Я знаю, что у Крокфорда есть очень упрямые взгляды на JavaScript, но это звучит совершенно неправильно для меня.
Прежде всего, continue
делает больше, чем просто прыгает на вершину петли. По умолчанию он также переходит к следующей итерации. Так что заявление Крокфорда не является полностью ложной информацией?
Что еще более важно, я не совсем понимаю, почему continue
будет считаться плохим. Это сообщение обеспечивает то, что, как представляется, общее предположение: Why is continue inside a loop a bad idea?
Хотя я понимаю, как 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
не является особенно полезным в этом конкретном примере, но это действительно демонстрирует тот факт, что она уменьшает глубину вложенности. В более сложном коде это может повысить читаемость.
Crockford не дает никаких объяснений относительно того, почему continue
не должно использоваться, так что имеет место какое-то более глубокое значение за этим мнением, что мне не хватает?
Ключевое слово 'continue' - это инструмент - используйте его там, где это применимо. SOmetimes это необходимо, чаще всего это не так. Единственный раз, когда это плохо, когда вам не нужно было его использовать, но было слишком ленивым или неряшливым, чтобы сделать это по-другому. – slugster
У меня было такое же чувство, и именно поэтому я сделал свой [пост] (http://stackoverflow.com/questions/30030033/continue-statement-confusion). То, что помогло мне, - просто подумать о слове 'hop' при использовании операторов continue. Я думаю, что г-н Кроуфорд использовал плохое слово выбора при разработке языка: P Тем более, что прыжок может использовать логику «продолжать» позади нее. Если вы прыгаете над чем-то, вы обычно продолжаете. Подумайте о марафонских дорожках как хорошей аналогии. –
«Мистер Кроуфорд» не разрабатывал язык. – rlemon