Вопрос:
Мне просто интересно об одном. Небольшой пример в 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 присваивается a
- a++ оценивается как 1
- a++ увеличивает до a 2
- a = {result of previous evaluation} присваивает значение 1 a поэтому он снова равен 1
var b = 1; b = ++b;
- 1 назначается b
- ++b увеличивает b на 2
- ++b оценивается как 2
- 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 и заменяете значение.