Я только что столкнулся с "особенностью" в Javascript относительно предварительных приращений. На всех других языках, которые я использовал, это происходит, как я думал. Например. в С++:
#include <iostream>
int main()
{
int i = 0;
i += ++i;
std::cout << i << std::endl; // Outputs 2.
}
Итак, ++i
не делает копию переменной, поэтому выход равен 2.
То же самое в PHP:
<?php
$i = 0;
$i += ++$i;
echo $i; // Outputs 2.
Однако в Javascript:
var i = 0;
i += ++i;
console.log(i); // Outputs 1.
Таким образом, это похоже на Javascript, оно делает копию i
и не ссылается на переменную. Является ли это намеренным, и если да, то почему?