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警告的优点。
这种改变会有什么不同吗?
答案 0 :(得分: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
在这些情况下,i
在增量后保持不变,但r
不同,i += 1
只是++i
的稍微冗长的形式。
在您的代码中,您根本没有使用返回值,所以不,没有区别。就个人而言,我更喜欢使用i++
,除非特别需要使用其他形式之一。