Например, это:
var a = 123; var b = a++;
теперь a содержит 124 и b содержит 123
Я понимаю, что b принимает значение a, а затем 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 . Пост- инкремент сначала возвращает значение, затем увеличивает, а pre incrementor ++a сначала увеличивает, а затем возвращает значение. Если вы просто написали a++ самостоятельно без назначения, вы не заметите разницы. Вот как обычно используется a++ , как коротко для a = a + 1 .
Это довольно стандартный.
Обратите внимание, что вы также можете написать
b = ++a;
Какой эффект вы, вероятно, ожидаете.
Важно понимать, что здесь есть две вещи: назначение и приращение, а язык должен определять, в каком порядке они будут происходить. Поскольку у нас есть как ++a и a++ имеет смысл, что они должны иметь разные значения.
Для тех из нас, кто живет на C, это вполне естественно. Если PHP ведет себя по-другому, нам может быть интересно, почему PHP решил отклоняться от того, к чему мы привыкли.
++ может использоваться как оператор пост-инкремента, как в вашем примере, или его можно использовать в качестве оператора предварительного инкремента, если он используется перед переменной.
var b = ++a;
Затем сначала переменная a будет увеличена, тогда приращение будет присвоено значению b .
Это стандартный способ сделать это. Оператор postincrement присваивает значение и затем увеличивает его.
Оператор preincrement ( ++a ) увеличивает и затем присваивает.
Я не знаком с php и не могу сказать, как он это делает или почему.
Когда вы помещаете ++ после переменной, она становится увеличивающейся после назначения. Вы также можете поставить ++ перед переменной, и она будет увеличена до назначения.
Javascript фактически ведет себя точно так же, как PHP для приращения префикса и постфикса.
++ до того, как предварительный приращение вызова переменной означает приращение значения переменной перед выполнением инструкции.
++ после того, как переменная, называемая post-increment, увеличивает значение переменной после выполнения инструкции.
оба увеличивают значение переменной.
$b=$a++; эквивалентно
$b=$a;//after $a=$a+1;
$ b = ++ $ a; `эквивалентно
$a=$a+1;//before $b=$a;
Другой пример
$a=5; echo $a++;//prints 5; $a=5; echo ++$a;//prints 6;
Пост-инкремент и предварительный инкремент являются общими операторами на многих языках, Javascript составляет около 30 лет от того, чтобы быть первым. PHP также поддерживает пост-инкремент.