какова логика его вывода? Это дает одинаковый результат как для Break, так и для продолжения - PullRequest
0 голосов
/ 04 июля 2019

Прежде всего, я запутался в выводе?Как этот вывод возможен?

Я пробовал много логики, но не получил универсальную логику /

с 'break;заявление:

for (var i = 2; i <= 8; i++) {
  if (i == 5) {
    break;
  }
  i++;
  console.log(i);
}

с оператором продолжения:

for (var i = 2; i <= 8; i++) {
    if (i == 5) {
        continue;
    }
    i++;
    console.log(i);
}

Вывод одинаков для обоих: 3 5 7 9

Ответы [ 2 ]

0 голосов
/ 04 июля 2019

Как мы все знаем,

  • Продолжить - Оператор continue завершает выполнение текущей итерации в цикле.
  • Break - Оператор break полностью прерывает (останавливает) выполнение цикла.

В этом коде

for (var i = 2; i <= 8; i++) {
  if (i == 5) {
    break; / continue;
  }
  i++;
  console.log(i);
}

Ваш i увеличивается два раза, один в loop, а другой в loop body, то есть ручное увеличение.

В этом случае цикл проходит следующие шаги,

Итерация цикла 1,

  1. я = 2
  2. входит в цикл и проверяет,

    if (i == 5) { перерыв; / Продолжить; } // as i=2 это ложно и не входит, если условие

  3. i ++ // i увеличено до 3
  4. console.log (i) // print 3
  5. проверяет i <= 8 // true </li>
  6. если шаг 5 истинен, то i ++ // теперь i с шагом 4

Итерация цикла 2,

  1. войти в цикл и проверить,

    if (i == 5) { перерыв; / Продолжить; } // as i=4 это ложно и не входит, если условие

  2. i ++ // i увеличено до 5

  3. console.log (i) // print 5
  4. проверяет i <= 8 // true </li>
  5. если шаг 10 истинен, то i ++ // теперь i с шагом 6

Итерация цикла 3,

  1. войти в цикл и проверить,

    if (i == 5) { перерыв; / Продолжить; } // as i=6 это ложно и не входит, если условие

и продолжается следующими шагами, как указано выше.

Итак, окончательный вывод,

Ваш фрагмент кода никогда не вводится, если условие то есть

if (i == 5) {
    break; / continue;
}

Поэтому ваш код никогда не ломается / продолжить.

0 голосов
/ 04 июля 2019

Из-за двойного приращения внутри блока и внутри оператора for вы получаете только четные числа для проверки.

//                                                     loop   1   2   3   4
//                                                     ---- --- --- --- ---      
for (var i = 2; i <= 8; i++) { // increment                   2   4   6   8
    console.log('top', i);     // always even                 2   4   6   8
    if (i == 5) {              // check with even value       2   4   6   8
        // continue;
        // break
    }
    i++;                       // increment                   3   5   7   9
    console.log('bot', i);     // always odd                  3   5   7   9
}
.as-console-wrapper { max-height: 100% !important; top: 0; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...