Понимание постепенного увеличения

Например, это:

var a = 123;
var b = a++;

теперь a содержит 124 и b содержит 123

Я понимаю, что b принимает, значение a и затем увеличивается. Однако я не понимаю, почему это так. Основная причина того, почему создатели JavaScript хотели бы это. Что преимущество к этому кроме запутывающих новичков?

5
задан random_user_name 1 February 2019 в 14:56
поделиться

6 ответов

Поэтому его называют "пост-инкрементирующим оператором". По сути, все представляет собой выражение , в результате которого получается значение. a + 1 - это выражение, в результате которого получается значение 124. Если присвоить это выражение b с помощью b = a + 1, то b будет иметь значение 124. Если ни к чему не приписать результат, то a + 1 все равно получится значение 124, оно сразу же будет выброшено, так как вы его нигде не "поймаете".

BTW, даже b = a + 1 - это выражение, которое возвращает 124. Результирующим значением выражения присваивания является присваиваемое значение. Поэтому c = b = a + 1 работает, как и следовало ожидать.

В любом случае, особенность выражения с ++ и -- в том, что помимо возврата значения оператор ++ напрямую изменяет переменную. Так что при выполнении b = a++, выражение a++ возвращает значение 123 и инкременты a. Инкрементор после сначала возвращает значение, затем инкременты, а до инкременты ++a сначала , а затем возвращает значение. Если вы просто написали a++ самостоятельно без присваивания, вы не заметите разницы. Так обычно используется a++, в качестве короткой руки для a = a + 1.

Это довольно стандартно.

.
8
ответ дан 18 December 2019 в 13:15
поделиться

Пост-инкремент и пре-инкремент являются обычными операторами во многих языках, Javascript - примерно через 30 лет после первого. PHP также поддерживает пост-инкремент

.
-3
ответ дан 18 December 2019 в 13:15
поделиться

Когда вы ставите ++ после переменную, она увеличивается после назначения. Вы также можете поместить ++ до переменную и она увеличится до назначения.

На самом деле Javascript ведет себя точно так же, как PHP для префиксного и постфиксного инкремента.

.
0
ответ дан 18 December 2019 в 13:15
поделиться

Обратите внимание, что вы также можете написать

b = ++a;

, что имеет эффект, который вы, вероятно, ожидаете.

Важно понимать, что здесь происходит две вещи: присваивание и приращение и язык должны определить, в каком порядке они будут происходить. Так как у нас есть и ++a, и a++, то имеет смысл, что они должны иметь разные значения.

Для тех из нас, кто находится на Си фонах, это вполне естественно. Если PHP ведет себя по-другому, мы можем задаться вопросом, почему он решил отклониться от того, к чему мы привыкли.

.
5
ответ дан 18 December 2019 в 13:15
поделиться

++ можно использовать как пост-инкрементирующий оператор, как в Вашем примере, или как пре-инкрементирующий оператор, если использовать до переменной.

var b = ++a;

Затем сначала будет увеличена переменная a, затем увеличенное значение присваивается b.

.
3
ответ дан 18 December 2019 в 13:15
поделиться

Это стандартный способ. Оператор preincrement (++a) оператор preincrement присваивает значение и затем присваивает.

Я не знаком с php и не могу сказать, как и почему он это делает.

.
1
ответ дан 18 December 2019 в 13:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: