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

cis*_*iso 3 javascript loops jslint pre-increment post-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;
      }
    }
}
Run Code Online (Sandbox Code Playgroud)

我不认为索引在这里是先增加还是后增加,因为它是在每次循环迭代之后完成的,但是想要确定.

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

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

p.s*_*w.g 10

唯一的区别是i++,++i和,i += 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
Run Code Online (Sandbox Code Playgroud)

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

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

  • 另外,一些背景信息,为什么有人使用`++ index`来增加变量:*编译*语言中的`index ++`和`++ index`之间可能存在性能差异,因为编译器可以转换后者减少机器指令.但是在Javascript中没有这样的区别(现代编译器应该能够检测到你是否没有访问变量并进行优化). (3认同)
  • 谢谢,pswg你之前非常清楚地回答了我的另一个问题.我非常感谢你的帮助.随着我越来越熟练,我希望有一天能帮助别人,就像你帮助我一样. (2认同)