Задать вопрос

Почему выводится 12?

У меня есть такой код:
for (var b = 10; b < 12; b++) {
console.log(b); // --> 10, 11
}

Здесь все понятно: взяли начальное значение, сверили с условием - вывели, увеличили на шаг, сверили с условием - вывели...
Но тут не очень понятно:
for (var b = 10; b < 12; b++) {
}
console.log(b);// --> 12

По идее должно выводиться 11 - взяли "начало", проверили условие, увеличили на 1, вывели. Почему 12?
  • Вопрос задан
  • 88 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Потому что цикл хоть и пустой, но будет крутиться пока выполняется условие. А оно перестаёт выполняться когда b = 12.
Ответ написан
Sanasol
@Sanasol Куратор тега JavaScript
нельзя просто так взять и загуглить ошибку
Ну так правильно цикл-то не останавливается заранее магическим образом.
Когда b перестаёт подходить под условие, тогда и цикл заканчивается.
Ответ написан
Комментировать
@lolzqq
HTML,CSS,JS,PHP
В первом случае вы отслеживаете все итерации, которые подошли по условию выполнения цикла (b<12)
b=10, b=10+1, b=10+1
Во втором случае вы отслеживаете результат последней итерации (из-за которой цикл завершился)
b=10+1+1

-Первый круг: цикл сперва берёт b=10 , сравнивает с условием b<12, затем выполняет инструкцию в фигурных скобках, и после этого делает b++
-Второй круг: цикл берёт уже b=11, сравнивает с условием b<12, затем выполняет инструкцию в фигурных скобках, и после этого снова делает b++
-Третий круг: цикл берёт b=12, сравнивает с условием b<12, и понимает, что пора закончить работу.

Это работает,как бесконечный вложенный if(){}
let b=10;
if(b<12){
   console.log(b);
   b++;
   if(b<12){
      console.log(b);
      b++;
      if(b<12){
         console.log(b);
         b++;
         if... // и так далее
      }
   }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
1. var доступен за пределами цикла
2. цикл завершает своё выполнение, когда условие b<12 перестаёт выполняться
Думаю дальше не сложно сложить 2+2
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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