为什么要使用JavaScript后缀递增/递减运算符



我目前正在JavaScript.info学习ES6,它介绍了递增/递减运算符:

前缀形式返回新值,后缀形式返回旧值(在递增/递减之前(。。。

如果我们想增加一个值并立即使用运算符的结果,我们需要前缀形式…

如果我们想增加一个值,但使用它以前的值,我们需要后缀形式。

但我很困惑,在变量增加后,什么时候需要使用上一个值?假设无论在哪里,这些都是edgecase,前缀形式++counter几乎总是首选,或者后缀形式counter++在野外更常见,这是否有充分的理由?

但我很困惑,在变量增加后,什么时候需要使用上一个值?

其思想是(1(使用上一个值,然后(2(递增变量。例如,您可以这样使用它:

let index = 0;
const obj1 = { id: index++ };
const obj2 = { id: index++ };
console.log(obj1);
console.log(obj2);

有时候,这就是你需要的。其他时候,您可能希望在完成增量后提取值,例如:

let highestIndexSoFar = 0;
const obj1 = { id: ++highestIndexSoFar };
const obj2 = { id: ++highestIndexSoFar };
console.log(obj1);
console.log(obj2);
console.log(highestIndexSoFar);

这取决于情况。两者都有自己的位置。

不过,另一种选择是避免它们,而只是作为一个独立的语句在表达式上下文之外递增——有些人可能会发现它更可读:

let highestIndexSoFar = 0;
highestIndexSoFar++;
const obj1 = { id: highestIndexSoFar };
highestIndexSoFar++;
const obj2 = { id: highestIndexSoFar };
console.log(obj1);
console.log(obj2);
console.log(highestIndexSoFar);

假设无论它在哪里,这些都是edgecase是否安全前缀形式++计数器几乎总是首选的,或者实际上有一个很好的理由,后缀计数器++形式野外常见的?

您会发现在野外使用的减量前用法比增量后用法更多,但添加到上面提供的答案中,如果可能的话,通常最好不要使用增量前/增量后/减量,并使用类似的简写加/减运算符:

counter += 1counter -= 1

其想法是,在重构时,它对开发人员更友好,而且可以防止代码看起来很奇怪。我经常看到人们使用双x++而不是x += 2,这可以说是更干净的编码方式。

最新更新