+=是否有后递增运算符的版本?

我了解 JS 中的预增量和后增量(++ii++),并且我也知道i += n是否要增量n,但据我了解,+=运算符是预增量。如果我想要进行内联后增量超过 1,我会使用哪个运算符?这可能吗?

目前,我的方法是简单地增加另一行上的变量,但内联这样做会很好!

2

  • 我能想到的最好的:i+=n,i-n


    – 


  • 2
    这个问题正在


    – 


2 个回答
2

+=默认情况下,运算符是预自增的。快速使用 console.log 可以看出,

let i=0;
console.log(i++);  // 0 (post-increment)
console.log(i);    // 1
console.log(++i);  // 2 (pre-increment)
console.log(i+=1); // 3 (pre-increment)

0

后增量(i++-风格的行为,其中表达式计算为 的原始值i然后 i在之后增量)的一般解决方案可以而且应该是在单独的行上执行增量。后增量 ( i++) 和预增量 ( ++i) 本质上都是造成混乱的便利功能(正如您最初困惑的问题所表明的那样;您混淆了这些术语)。任何时候它们之间的区别是相关的(当它们不是独立存在的,在更大的表达式之外)时,都可能会造成混乱,因此试图找到更多方法来通过明显非标准的解决方法来实现这些效果是自找麻烦。

可以做一些愚蠢的把戏,比如:

i+=j,i-j

(尽管除非在基本上每种情况下都加上括号,否则这都会失败)或:

[i,i+=j][0]  // Or [i,i+=j].shift()

这在较大的表达式中更安全,因为它没有优先级问题,并且不需要以创建和丢弃双元素数组为代价重复操作数两次(我希望 JIT 编译器可以将其转换为有效的形式,但谁知道呢?),但这毫无意义。只需执行较大的表达式,然后添加i+=j即可。