#javascript #loops
#javascript #циклы
Вопрос:
Я просматриваю учебное пособие по циклам javascript.info и я в замешательстве, почему происходит следующее:
let i = 3;
while (i) alert(i--);
результат: 3, 2 и 1
Почему первый результат равен 3, а не 2?
Спасибо.
Комментарии:
1. потому что он говорит «я -«, а не «-i»
2. Оператор уменьшения (—) уменьшает (вычитает единицу из) своего операнда и возвращает значение. Итак, i сначала уменьшается, а затем отображается в alert
3.
i--
возвращает значениеi
до его уменьшения.--i
уменьшаетi
, а затем возвращает уменьшенное значение. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference /…
Ответ №1:
Вы используете оператор Decrement (—)
Это то, что говорится в документах MDN
Если используется postfix, с оператором после операнда (например, x— ), оператор decrement уменьшает и возвращает значение перед уменьшением.
Если используется префикс, с оператором перед операндом (например, —x ), оператор уменьшения уменьшает и возвращает значение после уменьшения.
То, что вы видите, это значение перед уменьшением, вот как это работает. Если вы хотите использовать другой способ --i
Ответ №2:
Операторы — работают двумя разными способами.
Следующий код уменьшится на 1 после его выполнения:
let i = 3;
while (i) alert(i--); //3
Следующий код уменьшится на 1, прежде чем он будет выполнен:
let i = 3;
while (i) alert(--i); //2
Я бы также предложил делать это в цикле, а не в оповещении.
Пример:
let i = 3;
while (--i >= 0) alert(i); //2