Постфикс и префиксы в JavaScript

Вопрос: Мне просто интересно об одном. Небольшой пример в Javascript var a = 1; a = a++; console.log(a); // 1 var b = 1; b = ++b; console.log(b); // 2 var c = 1; c += 1; console.log(c); //2 Я понимаю, почему это работает таким образом, в случае, если b и c, а как насчет?

Вопрос:

Мне просто интересно об одном. Небольшой пример в Javascript

var a = 1; a = a++; console.log(a); // 1 var b = 1; b = ++b; console.log(b); // 2 var c = 1; c += 1; console.log(c); //2

Я понимаю, почему это работает таким образом, в случае, если b и c, а как насчет? a Сначала код выполняет задание a = a, значение остается таким же на самом деле, но тогда оно должно (как я вижу) увеличивать и увеличивать значение a на единицу. Но этого не происходит. Зачем?

Лучший ответ:

var a = 1; a = a++;

  1. 1 присваивается a
  2. a++ оценивается как 1
  3. a++ увеличивает до a 2
  4. a = {result of previous evaluation} присваивает значение 1 a поэтому он снова равен 1

var b = 1; b = ++b;

  1. 1 назначается b
  2. ++b увеличивает b на 2
  3. ++b оценивается как 2
  4. b = {result of previous evaluation} назначает от 2 до b так что он еще 2

Ответ №1

Это как работает JavaScript. в случае a++ возвращаемое значение фактически является исходным значением. Вы присвоили исходное значение a раз.

Ответ №2

Так работает пост-приращение

Если используется постфикс, с оператором после операнда (например, x++), то он возвращает значение перед приращением.

a = a++;

когда a++ выполняет a, равно 2, и выражение возвращает 1, а a присваивается значение 1.

Именно по этой причине вы видите значение до приращения.

Обратите внимание: если вы не назначили обратно, вы увидите увеличенное значение a. Вы коротко овервердируете добавочное значение здесь, назначив его обратно.

var a = 1; a++; console.log(a); // 1Ответ №3

Ходят слухи, что для выполнения ++a значение в памяти увеличивается, а затем возвращается. В то время как для a++ сначала значение сохраняется в созданной временной переменной, тогда значение первичной переменной увеличивается и возвращается значение временной переменной – таким образом, “затраты” на создание временной переменной возрастают.

Ответ №4

a= a++ возвращает предыдущее значение a перед его увеличением.

Вы можете просто использовать a++

Ответ №5

a++ возвращает значение, которое до самовосстановления; В то время как ++a возвращает значение, которое после самообновления;

поэтому поэтому, когда вы вызываете a = a++, a равно 1;

Ответ №6

Оператор postfix возвращает исходное значение a. Таким образом, a увеличивается оператором postfix ++, но затем он перезаписывается путем назначения возвращаемого значения оператора, который является значением до приращения.

Ответ №7

Возвращаемое значение a из 1 временно сохраняется для оценки, тогда происходит приращение, a теперь имеет значение 2 а затем получается assingmet предыдущего хранимого значения.

a = a++;

такое же, как

a = (temp = a, a++, temp); Ответ №8var a = 1; // Here a++ means a = a; then a = a + 1 a = a++; // so you are assign first step value inside a so thats way a = 1 console.log(a); // 1

означает, что вы сохраняете значение в тот момент, когда a++ равно a = a. Вы просто назначаете значение a и заменяете значение.

Оцените статью
Добавить комментарий