【发布时间】:2014-07-18 19:12:59
【问题描述】:
我刚刚在 Javascript 中遇到了一个关于预增量的“功能”。在我使用过的所有其他语言中,它就像我想象的那样。例如。在 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 并且不引用变量。这是故意的吗?如果是,为什么?
【问题讨论】:
-
也许不是解释,甚至不是解决方案,但肯定是一本好书:stackoverflow.com/questions/971312/…
-
在 C++ 中,这甚至没有意义。这是未定义的行为。