Вложенные циклы for — javascript: пожалуйста, объясните, почему первая итерация индекса выполняется после объявления внутреннего цикла for

#javascript #loops #for-loop #nested

Вопрос:

Мой код работает, но я не знаю, почему он работает. Начальный индекс моего внешнего цикла равен 2, и я зарегистрировал его в консоли сразу после создания внешнего цикла for для подтверждения. Условие внутреннего цикла for таково, что код выполняется до тех пор, пока его текущий индекс меньше текущего индекса во внешнем цикле for. В моем примере: фактор Я утешил зарегистрированные индексы внешнего цикла (console.log(номер)), сразу после создания внутреннего цикла for просто для подтверждения.

Первое «число», которое печатается, равно 3, и я ожидал, что на данный момент оно будет равно 2, так как я не написал никакого кода для изменения этого индекса. Не мог бы кто-нибудь, пожалуйста, объяснить, что я здесь упускаю.

 let show_primes = limit => {
  for (let number = 2; number <= limit; number  ) {
    console.log(number); //2, 3, 4, 5, 6, 7, 8, 9, 10

    let is_prime = true

    for (let factor = 2; factor < number; factor  ) {
      console.log(number); //3, 4, 5, 5, 5, 6, 7, 7...
      console.log(factor); //2, 2, 2, 3, 4, 2, 2,

      if (number % factor === 0) {
        is_prime = false
        break
      }
    }
    if (is_prime == true) console.log(number)
  }
}
show_primes(10) 

Комментарии:

1. Первое напечатанное «число» — 3’, которое я вижу 2 .

2. » Первое» число», которое печатается , равно 3, и я ожидал, что на данный момент оно будет равно 2 «, если вы имеете в виду console.log во внутреннем цикле, то это не может быть 2 потому factor < number , что — 2 < 2 есть false , поэтому внутренний цикл не выполняется в первый раз. Только когда number = 3 и выше.

3. Если это поможет, вот помеченные журналы

4. Вы действительно ответили на мой вопрос. Спасибо.

Ответ №1:

поскольку фактор=2 и число=2 и 2 не меньше 2,из-за этого он не войдет во внутреннюю область, сначала вам нужно записать фактор.