我刚刚在JavaScript中遇到了一个关于pre-increments的“特性”。在我使用过的所有其他语言中,它都像我想象的那样。例如,在C++中:
#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
而不是引用变量。这是故意的吗?如果是,为什么?