Например, это:
var a = 123;
var b = a++;
теперь a
содержит 124
и b
содержит 123
Я понимаю, что b принимает, значение a и затем увеличивается. Однако я не понимаю, почему это так. Основная причина того, почему создатели JavaScript хотели бы это. Что преимущество к этому кроме запутывающих новичков?
Поэтому его называют "пост-инкрементирующим оператором". По сути, все представляет собой выражение , в результате которого получается значение. 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
.
Это довольно стандартно.
.Пост-инкремент и пре-инкремент являются обычными операторами во многих языках, Javascript - примерно через 30 лет после первого. PHP также поддерживает пост-инкремент
. Когда вы ставите ++
после переменную, она увеличивается после назначения. Вы также можете поместить ++
до переменную и она увеличится до назначения.
На самом деле Javascript ведет себя точно так же, как PHP для префиксного и постфиксного инкремента.
.Обратите внимание, что вы также можете написать
b = ++a;
, что имеет эффект, который вы, вероятно, ожидаете.
Важно понимать, что здесь происходит две вещи: присваивание и приращение и язык должны определить, в каком порядке они будут происходить. Так как у нас есть и ++a
, и a++
, то имеет смысл, что они должны иметь разные значения.
Для тех из нас, кто находится на Си фонах, это вполне естественно. Если PHP ведет себя по-другому, мы можем задаться вопросом, почему он решил отклониться от того, к чему мы привыкли.
.++
можно использовать как пост-инкрементирующий оператор, как в Вашем примере, или как пре-инкрементирующий оператор, если использовать до переменной.
var b = ++a;
Затем сначала будет увеличена переменная a
, затем увеличенное значение присваивается b
.
Это стандартный способ. Оператор preincrement (++a
) оператор preincrement присваивает значение и затем присваивает.
Я не знаком с php и не могу сказать, как и почему он это делает.
.