Приращение в console.log изменяет значение переменной - PullRequest
0 голосов
/ 24 февраля 2020

Я только что наткнулся на это:

let a = 1;
console.log(a++);
console.log(a); // 2

Я пытаюсь понять, как изменяется значение 'a' в console.log.

Ответы [ 3 ]

3 голосов
/ 24 февраля 2020

В комментарии вы сказали:

Я понимаю [что a++ - это a = a + 1], но я не знал, что это можно сделать в console.log

Вызов console.log аналогичен вызову любой другой функции. foo(a++) будет делать то же самое:

  • Сначала значение a откладывается для будущего использования
  • Затем к нему добавляется 1, обновляя a
  • Затем старое значение a из шага 1 передается в foo (или console.log).

(Это потому, что вы использовали постфиксный инкремент. Если вы ' d использовал приращение префикса [++a], функция получала бы обновленное значение, а не старое значение.)

console.log не особенное, это просто предопределенная функция большинства сред (браузеры, Node.js) ) сделать доступным свой код. Если вы выполняете побочные эффекты в списке аргументов (например, a++), эти побочные эффекты возникают.

1 голос
/ 24 февраля 2020

a++ является эквивалентом a = a + 1, происходящим после вычисления переменной a.

Таким образом, вы получаете 1 для оператора console.log, а затем a увеличивается:

Ваш код также может быть написан так: ++ просто короче:

let a = 1;
console.log(a);
a = a + 1;
console.log(a); // 2

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators

1 голос
/ 24 февраля 2020

a++ похоже на то, что вы запускаете его вне console.log (), это просто добавляет +1 к

let a = 1;
console.log(a++);
console.log(a); // 2
a++
console.log(a); // 3
...