#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);
}