Почему нельзя добавить точку с запятой в последнем операторе в цикле for js?

#javascript #for-loop

#javascript #for-цикл

Вопрос:

for loop Формальный формат js выглядит следующим образом:

 for (statement 1; statement 2; statement 3) {
  code block to be executed
}
  

Почему нельзя добавить точку с запятой в конце statement 3 ?

 for (statement 1; statement 2; statement 3;) {
  code block to be executed
}
  

Пожалуйста, скажите мне логику вместо правила.

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

1. Поскольку синтаксис определяется как for (;;) , а не for (;;;)

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

3. Точка с запятой здесь является разделителем. Точно так же, как вы бы сделали function x(a, b, c) , а не function x(a, b, c,)

Ответ №1:

Это не терминаторы операторов, как обычно ; , они являются специфической частью for синтаксиса.

Как в этом:

 for (let i = 0; i < 10;   i) { ... }
  

Сильно отличается от этого:

 let i = 0;
i < 10;
  i;
  

Все это связано с тем, как анализируется язык и какое значение имеет каждый символ в любом данном контексте. Иногда ; является завершителем оператора, но вы, вероятно, знаете, что это не всегда так:

 let semicolon = ";";
  

Там две точки с запятой, и только одна является завершителем оператора. Один является частью строки. Аналогично, те, что внутри for , являются особенными.

Если вы посмотрите на формальное определение в MDN, вы увидите for , что оно определено как:

 for ( init_clause ; cond_expression ; iteration_expression ) loop_statement     
  

Где каждый из этих терминов, init_clause , cond_expression и iteration_expression разрешены ли там конкретные выражения, и их конкретная функция определена ниже.

Специфический синтаксис for оператора унаследован от версии same на языке Си.

Вполне возможно, что JavaScript мог бы выбрать здесь какой-то другой символ, например # , и он работал бы так же, но это сделало бы JavaScript немного странным для тех, кто знаком с C или другими языками, вдохновленными C, с точно такой же структурой, как C и Java.

Ответ №2:

ну, синтаксис для цикла for таков

 for(;;)
{ 
//anything
}
  

пример :

 for(x=0;x<5;x  )
{ 
console.log(x);
}