为什么要避免 JavaScript 中的递增 (" ") 和递减 ("--") 运算符?

新手上路,请多包涵

jslint 工具的提示之一 是:

++--

++ (递增)和 -- (递减)

众所周知,运营商会通过以下方式导致不良代码

鼓励过度狡猾。他们

仅次于有缺陷的架构

在启用病毒和其他

安全威胁。有一个plusplus

禁止使用这些的选项

运营商。

我知道像 $foo[$bar++] 这样的 PHP 结构可能很容易导致一个错误,但我想不出比以下更好的方法来控制循环:

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

或者

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

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

原文由 artlung 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

我的观点是始终在一行中单独使用 ++ 和 -- ,例如:

 i++;
 array[i] = foo;

代替

array[++i] = foo;

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

原文由 cdmckay 发布,翻译遵循 CC BY-SA 4.0 许可协议

在 C 中有这样的历史:

 while (*a++ = *b++);

复制一个字符串,也许这就是他所指的过度欺骗的来源。

总是有什么问题

++i = i++;

要么

i = i++ + ++i;

实际上做。它在某些语言中定义,而在其他语言中不能保证会发生什么。

除了这些示例,我认为没有什么比使用 ++ 递增的 for 循环更惯用的了。在某些情况下,您可以使用 foreach 循环或检查不同条件的 while 循环。但是扭曲您的代码以尝试避免使用递增是荒谬的。

原文由 Eclipse 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题