Ввод оператора внутри alert() в javascript

#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