Slasherr
@Slasherr

Как понять циклы?

Изучаю JS. Дошёл до циклов, и вроде бы несложно, но блин ступор(
С while более менее понятно, переписать с цикла for в while могу, но блин когда переписать с while на for, я теряюсь.
Взять тот же самый код.
function rangeSum( from, to) {
  var i, sum = 0;
  for( i = from; i <= to; i++) {
    sum = sum + i;
  }
  return sum;
}

И не могу понять как тут цикл работает(...Кто может подсказать ресурс, где рассписано все по деталям?
В основном пользовался книгой Кантора, но что-то не идет(
  • Вопрос задан
  • 1134 просмотра
Решения вопроса 3
sergiks
@sergiks Куратор тега JavaScript
♬♬
Неплохое описание цикла for на Mozilla Developers Network (на русском).

Попробую своими словами. Внутри for( ... ) находится три выражения:
  1. начальное состояние
  2. проверяемое условие
  3. действие на каждом цикле

Для сравнения, в цикле while() из этого зоопарка присутствует только условие.

Простой пример:
for( i = 0; i < 2; i = i + 1) {
  console.log( i ); // выводит значение i в консоль
}

Один раз в начале выполняется первая часть, «начальное состояние» i = 0.
Проверяется условие i < 2.
Всё в порядке? – «ныряем» внутрь. Выполняется console.log() и выводится 0.

Теперь выполняется третье выражение: i = i + 1.
Снова проверяется условие i < 2 и если всё ок, снова ныряем.
Выводится 1.

Опять выполняется третье выражение i = i + 1, но условие уже не проходит проверку, т.к. i стало равно 2.
Всё, цикл закончен.

Такой же цикл с while() выглядел бы так:
i = 0;
while( i < 2 ) {
  console.log( i );
  i = i + 1;
}

Т.е. for() это просто более компактная запись довольно типичного цикла.
Ответ написан
@ambrazhey
Начинающий верстальщик
Учебник Кантора крайне годный, но если тяжко воспринимать попробуйте "Выразительный javascript", на gitbooke есть неплохой русский перевод.
Ответ написан
Комментировать
@Everal
for(Текущее значение ( i ); Текущее значение ( i ) Меньше или равно ( <= ) Максимальному значению ( to ); Добавить 1 к текущему значению i++ ) {
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы