В ES6 JavaScript мы можем использовать `let` для for-l oop, но не для while-l oop? - PullRequest
0 голосов
/ 28 января 2020

работают следующие работы:

let re = /\d/g;

while (result = re.exec("654 321")) console.log(result);

Однако, если мы будем следовать тому, как написано для -l oop:

for (let i = 0; i < 10; i++) console.log(i);

for (const a of [1,3,5]) console.log(a);

и использование (с ожидаемым результатом ошибки):

let re = /\d/g;

while (let result = re.exec("654 321")) console.log(result);

, тогда let сломает код. Какое правило в ES6 определяет, что мы не можем использовать let в этом случае? Хотя обычно мы объявляем переменную перед оператором while, в этом случае имеет смысл не делать этого. Может появиться let или даже const может иметь смысл?

Ответы [ 4 ]

2 голосов
/ 28 января 2020

Это потому, что все внутри скобок в вашем выражении while является условием. Вы не можете определить новые переменные внутри условия.

Вы можете использовать let inside для l oop из-за структуры:

for (<declare variable>;<condition>;<iterator>)
1 голос
/ 28 января 2020

Оператор while создает al oop, который выполняет указанный оператор, пока условие теста оценивается как true. Условие оценивается перед выполнением оператора:

while (condition)
  statement

условие Выражение, вычисленное перед каждым проходом через l oop. Если это условие имеет значение true, оператор выполняется. Когда условие оценивается как ложное, выполнение продолжается с оператором через некоторое время. L oop.

оператор Необязательный оператор, который выполняется, пока условие оценивается как истинное. Чтобы выполнить несколько операторов в l oop, используйте оператор блока ({ ... }) для группировки этих операторов.

Таким образом, наличие оператора во время нахождения условия выражение неправильно синтаксически. Пожалуйста см. Это для более подробной информации .

0 голосов
/ 28 января 2020

let возвращает неопределенное значение, в то время как присвоение неопределенной переменной возвращает значение.

let a = 3;
// undefined;
b = 4;
// 4;

Так что ваше время l oop никогда не запустится.

0 голосов
/ 28 января 2020

фрагмент кода не работает для меня. (редактировать: попробовал еще раз, и он выдал ошибку). но в любом случае это кажется неправильным: начальный оператор for l oop выполняется только один раз. Это означает, что он определяет i только один раз. но в случае while вы определяете result снова и снова. Наверное, поэтому это не разрешено и выдает ошибку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...