这个javascript中的增量有什么问题?

时间:2011-10-11 15:08:30

标签: javascript for-loop

for (var i=0;i<5;++i){
alert(i);

}


for (var i=0;i<5;i++){
alert(i);

}

这两个结构返回相同的结果:0,1,2,3,4。为什么?它们之间有什么区别?我在for循环中使用的增量是否重要?

5 个答案:

答案 0 :(得分:2)

如果你把++放在变量前面,你在返回它之前递增它(在那个语句中),如果你把它放在后面你返回值,然后再增加它。由于您对语句中的值不做任何操作,因此声明后的结果是相同的。

考虑一下:

var i = 0;
var a = ++i; // a is 1
var b = i++; // b is also 1, i is now 2.

答案 1 :(得分:1)

前者是预增量,后者是后增量。

差异不是你的例子,因为你没有把结果分配给任何东西,但是在将结果分配给另一个变量时显示自己很多。

var i = 0;
alert(i); // alerts "0"

var j = i++;
alert(j); // alerts "0" but i = 1

var k = ++i; 
alert(k); // alerts "2" and i = 2

实例:http://jsfiddle.net/ggUGX/

答案 2 :(得分:0)

对于一个你看不出任何差异的循环,但是++ i递增然后返回值,而i ++返回一个值,然后递增。如果你有像

这样的代码
var a = myarray[++i]

var a = mayarray[i++];

他们将返回不同的值

答案 3 :(得分:0)

这两个代码块应该具有相同的输出。 i ++和++ i之间的差异是变量i递增的顺序,只有在同时使用i的值时才重要。

例如,++ i和i ++有效地做同样的事情,除非你像这样使用它:

y = i++;

y = ++i;

在第一个例子中,i在y被设置为其值之后递增(因此,如果i = 0,y = 0,则i = 1)。在第二个例子中,i在y被设置为其值之前递增(所以如果i = 0,则i = 1,y = 1)。

因为你没有在for语句中以类似的方式使用i ++,所以它没有任何有效的区别。

答案 4 :(得分:0)

for循环中的

i++++i作为不同的语句执行。因此,将i++++i置于for循环中并没有任何区别。