【发布时间】:2011-08-26 14:46:23
【问题描述】:
我知道你可以简单地通过 i++ 向变量添加一个(假设 i 是你的变量)。当遍历数组或在“for”语句中使用它时,可以最好地看到这一点。在网上找到一些代码后,我注意到 for 语句使用了++i(与i++ 相对)。
我想知道是否有任何显着差异,或者两者的处理方式是否有任何不同。
【问题讨论】:
标签: javascript increment
我知道你可以简单地通过 i++ 向变量添加一个(假设 i 是你的变量)。当遍历数组或在“for”语句中使用它时,可以最好地看到这一点。在网上找到一些代码后,我注意到 for 语句使用了++i(与i++ 相对)。
我想知道是否有任何显着差异,或者两者的处理方式是否有任何不同。
【问题讨论】:
标签: javascript increment
++i 的值为i + 1,i++ 的值为i。在任一已评估之后,i 是 i + 1。这是时间上的差异,这就是为什么它们通常被称为“前增量”和“后增量”。不过,在 for 循环中,这并不重要。
【讨论】:
++i 称为前置增量,i++ 称为后置增量。不同之处在于变量增加的时间。变量前递增通常加 1 然后使用该值,而后递增使用变量然后递增。
【讨论】:
是的,有一个很大的区别。
var i = 0;
var c = i++; //c = 0, i = 1
c = ++i; //c = 2, i = 2
//to make things more confusing:
c = ++c + c++; //c = 6
//but:
c = c++ + c++; //c = 13
这里有一个把它们放在一起的小提琴:http://jsfiddle.net/maniator/ZcKSF/
【讨论】:
看看这个链接:http://www.w3schools.com/js/js_operators.asp 这是后增量与前增量。它们最终都增加了值,但是一个在增加之前返回值(++y),另一个在之后返回值(y++)。 但是,在 for 循环中使用它并没有任何区别 --
for( var i = 0; i < 100; i++ ) { ... }
和
一样for( var i = 0; i < 100; ++i ) { ... }
a=1;
b=1;
c=++a;//the value of a is incremented first and then assigned to c
d=b++;//the value of b is assigned to d first then incremented
现在如果你打印 a,b,c,d.. 输出将是:
2 2 2 1
【讨论】:
像 Douglas Crockford 这样的人建议不要使用这种递增方式,其中包括 Rafe Kettler 所描述的其他原因。无论您多么有经验,有时++i/i++ 会让您大吃一惊。另一种方法是使用i += 1 简单地将i 加1,可读、可理解且明确。
【讨论】: