为什么在 JavaScript 中避免递增 (“++”) 和递减 (“--”) 运算符?

jslint 工具的提示之一是:

++--
已知 (增量) 和 (递减) 运算符通过鼓励过度的棘手性来导致代码不良。在支持病毒和其他安全威胁方面,它们仅次于错误的体系结构。有一个 plusplus 选项禁止使用这些运算符。++--

我知道PHP结构很容易导致一个off-by-one的错误,但我无法找到比以下更好的方法来控制循环:$foo[$bar++]

while( a < 10 ) do { /* foo */ a++; }

for (var i=0; i<10; i++) { /* foo */ }

突出显示它们是因为有一些类似的语言缺少“”和“”语法或以不同的方式处理它,还是有其他理由避免“”和“”我可能错过?jslint++--++--


答案 1

我的观点是始终在一行上使用++ 和 -- 本身,如:

i++;
array[i] = foo;

而不是

array[++i] = foo;

除此之外的任何事情都可能让一些程序员感到困惑,在我看来是不值得的。For 循环是一个例外,因为增量运算符的使用是惯用的,因此总是很清楚。


答案 2

坦率地说,我对这个建议感到困惑。我的一部分想知道它是否更多地与缺乏javascript程序员的经验(感知或实际)有关。

我可以看到有人只是“破解”一些示例代码,可能会对++和--,犯一个无辜的错误,但我不明白为什么有经验的专业人士会避免它们。