@vasIvas

Почему while только тогда, когда нет нужды во втором итеративном свойстве?

Вот почему я не первый раз слышу упреки при использовании while тогда, когда есть нужда во втором, итеративном свойстве? Типа -
var lenght = array.lenght,
count      = 0;

while(count < lenght){}

Почему это неправильно, если мне так больше нравится?
  • Вопрос задан
  • 2366 просмотров
Решения вопроса 1
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
Нет абсолютно никакой разницы между for и while, кроме инструкции continue.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Вы любите спотыкаться?

Современные программные продукты настолько сложны, что написать их в одиночку практически нереально — за время написания релизятся конкуренты и труд нескольких месяцев, если не лет, летит в трубу.
Поэтому кодят в команде.
А в команде, как в любом коллективе, твоя свобода кончается там, где начинается свобода соседа. Поэтому надо сосуществовать и вырабатывать общие правила поведения. Например, стайлгайды для кода и паттерны проектирования.

Конечно, ничего особо плохого в том, чтобы обходить массив по while, нету. Но так не делают (хотя бы потому, что в for(;;) не надо вручную менять счетчик). А раз так не делают, ваши коллеги каждый раз взглядом спотыкаются об этот кусок.
Ответ написан
Комментировать
@bromzh
Drugs-driven development
Просто цикл for выглядит более ясно и понятно, если надо перебрать некую коллекцию. В случае while можно напортачить с изменением счётчика. While обычно используют, если критерий выхода из цикла - некое логическое значение. А for - если идёт итерация по коллекции (массив или объект).
Ответ написан
Уже давно пора использовать es6, итерация по массиву с for..of намного приятнее.

А пока, while и for отличаются между собой как слова "цикл" и "итерация". Немного лирики)
- "Через цикл можно осуществить итерацию, но через итерацию нельзя выразить цикл."
- или, "Не любой цикл является итерацией, но любая итерация является циклом"
Пример: когда for становится эквивалентным while - это for(;condition;){}, но так писать не имеет смысла, такой statement должен сколапсировать в while(condition){}.
Из этого следует, что while более универсальный, тем самым менее выразительный. Тогда как for нацелен лишь на итерацию, тем самым более выразительный.

Так и что использовать? Как по мне, так это то, что вам нравится. Меня всегда настораживает, когда кто-то упрекает стилистику кода, ну а здесь и вовсе не может быть дискуссий, ведь оба варианта одинаково-хорошо лаконичны, и в производительности различиями можно пренебречь.

А вот за for(var i in array){} и вправду можно обосновано поупрекать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы