这个循环中++ i和i ++之间有区别吗?

时间:2014-02-28 01:54:48

标签: javascript loops jslint post-increment pre-increment

array.prototype.reduce函数位于:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

它有以下循环:

for (index = 0; length > index; ++index) {
    if (this.hasOwnProperty(index)) {
      if (isValueSet) {
         value = callback(value, this[index], index, this);
      } else {
        value = this[index];
        isValueSet = true;
      }
    }
}

我认为索引在这里是先增加还是后增加没有区别,因为它是在每次循环迭代后完成的,但是想要确定。

可以将其更改为索引+ = 1,以便传递jslint吗?请不要讨论jslint警告的优点。

这种改变会有什么不同吗?

1 个答案:

答案 0 :(得分:10)

i++++ii += 1之间的唯一区别是从表达式返回的值。请考虑以下事项:

// Case 1:
var i = 0, r = i++;
console.log(i, r); // 1, 0

// Case 2:
var i = 0, r = ++i;
console.log(i, r); // 1, 1

// Case 3:
var i = 0, r = (i += 1);
console.log(i, r); // 1, 1

在这些情况下,i在增量后保持不变,但r不同,i += 1只是++i的稍微冗长的形式。

在您的代码中,您根本没有使用返回值,所以不,没有区别。就个人而言,我更喜欢使用i++,除非特别需要使用其他形式之一。