2014-01-07 142 views
0

我知道,在C++中,++我比i ++更好。在javascript for循环中,i ++和++ i有什么不同?

++i; // Fetch i, increment it, and return it 
i++; // Fetch i, copy it, increment i, return copy 

这是same question about c++

那么,怎么样的JavaScript?

之间我++和++ i是表达式的值的差:

+5

与C++相同的语义。 (也有点奇怪的说,预增量比后增量“好”,它是*不同的,但我不明白为什么它会更好。) – Pointy

+0

定义“更好”。性能?如果是这样,忘记它。我不相信你能够享受JS优化级别的好处(如果有的话)。 –

+0

[测试](http://jsperf.com/prefix-or-postfix-increment)我的iPhone上的表现和他们几乎相同。 –

回答

1

Guffa两者。

'值i++是增量前的值i++i的值是增量后的值i

实施例:

var i = 42; 
alert(i++); // shows 42 
alert(i); // shows 43 
i = 42; 
alert(++i); // shows 43 
alert(i); // shows 43 

i----i运营商的工作方式相同“。

所以基本上,唯一的区别是增量的结果。

+0

不,他们不会做同样的事情。他们返回不同的值。 – Doorknob

+0

@DoorknobofSnow编辑 – Cilan

0

除非您正在使用增量结果,无论是在赋值中还是在表达式中,前后增量之间绝对没有区别。

如果使用结果,预增量可能会稍微快一点,因为它不需要在递增时保存旧值。但是,如果您使用的是结果,则需要根据您需要分配哪个值来选择要使用的表单 - 通常无法根据表现做出决定。

相关问题