для цикла с одной точкой с запятой выдает ошибку «Неперехваченная синтаксическая ошибка: неожиданный токен»)»

#javascript #for-loop #iterator #console #break

Вопрос:

Следующий цикл for работает нормально

 for (let count = 0;; count  ) {
  console.log(count);
  if (count >= 3)
    break
} 

Это приводит к ошибке, когда вместо двух точек с запятой стоит только одна ;

 for (let count = 0; count  ) {
  console.log(count)
  if (count >= 3)
    break
} 

Неперехваченная синтаксическая ошибка: Неожиданный токен ‘)

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

1. Его проблема компиляции, чтобы глубоко погрузиться в это, может быть, нужно пройти через developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

Ответ №1:

Просто так работает синтаксис циклов for. Точки с запятой в цикле for отделяют друг от друга три разных выражения — оператор «инициализация переменной», выражение «условие остановки» и выражение «после итерации» (я просто придумываю имена здесь, но они соответствуют их назначению).

Итак, в этой строке кода:

 for (let count = 0;; count  )
 

Ставя там две точки с запятой, вы в основном говорите, что среднего выражения нет, т. Е. Для этого цикла for нет условия остановки. Вы можете опустить любой раздел, который вам нравится. for (;;) это тоже допустимый цикл, и он делает то же самое, while (true) что и . Важно то, что эти две точки с запятой всегда требуются в цикле.

Если, например, вы написали эту строку кода:

 for (let count = 0; count  )
 

Вы предоставляете только два из трех необходимых выражений. Какие два вы поставляете? Является ли count условием остановки? Или это действие после каждой итерации? Вместо того, чтобы компилятор угадывал ваши намерения , он просто выдает синтаксическую ошибку и требует, чтобы вы использовали две точки с запятой, чтобы было ясно, что ваши намерения состояли в том, чтобы интерпретировать это как for (let count = 0;; count ) «нет for (let count = 0; count ;) «.

Узнайте больше об этом цикле в стиле c для MDN здесь.