当前位置: 首页 > 面试题库 >

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

江迪
2023-03-14
问题内容

jslint工具的提示之一是:

++和-

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

我知道像这样的PHP构造$foo[$bar++]可能很容易导致一次错误的错误,但是我找不到比a while( a < 10 ) do { /* foo */ a++; }或更好的控制循环的方法for (var i=0; i<10; i++) { /* foo */ }

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


问题答案:

我的观点是始终单独使用++和-,如下所示:

i++;
array[i] = foo;

代替

array[++i] = foo;

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



 类似资料:
  • 问题内容: 我注意到,可以将预增减运算符应用于变量(例如)。它可以编译,但实际上并不会改变变量的值! Python中预增/减运算符(++ /-)的行为是什么? 为什么Python会偏离C / C ++中看到的这些运算符的行为? 问题答案: 不是运算符。它是两个运算符。该运营商的身份运营,这什么都不做。(澄清:和一元运算符仅对数字起作用,但是我假设你不会期望假设的运算符对字符串起作用。) 解析为 转

  • C++ 重载运算符和重载函数 递增运算符( ++ )和递减运算符( -- )是 C++ 语言中两个重要的一元运算符。 下面的实例演示了如何重载递增运算符( ++ ),包括前缀和后缀两种用法。类似地,您也可以尝试重载递减运算符( -- )。#include <iostream> using namespace std; class Time { private: int hours; // 0 到

  • 本文向大家介绍关于Java中递增和递减运算符的有趣事实,包括了关于Java中递增和递减运算符的有趣事实的使用技巧和注意事项,需要的朋友参考一下 关于Java中的递增和递减运算符,有许多有趣的事实。我们将通过示例讨论其中的一些- 增量和减量运算符不能与'final'变量一起使用。这是由于与'final'关键字相关联的变量无法更改的事实- 示例 输出结果 无法嵌套'++'和'--'运算符。 示例 输出

  • 问题内容: Process p = Runtime.getRuntime().exec(command); is = p.getInputStream(); byte[] userbytes = new byte[1024]; is.read(userbytes); 我想从java在linux os中执行shell命令。但是Pmd报告说不要使用Java Runtime.exec()。为什么?是什么

  • 问题内容: 从下面或此处的程序中,为什么最后一次调用要打印该值7? 问题答案: 这将打印出“ 6”,因为它将i加1并返回值。5 + 1 = 6;这是前缀,在操作中使用该编号之前会添加该编号。 这将打印出“ 6”,因为它需要i,存储副本,加1并返回副本。因此,你获得了我当时的价值,但同时又增加了它。因此,你可以打印出旧值,但是它会增加。后缀增量的好处。 然后,当你打印出i时,它会显示i的实际值,因为

  • 根据这一环节中的信息,后置增量和递减运算符占据首位。这个链接上写着“举个例子: foo=*P++; 这里,p作为表达式的一个副作用而递增,但是foo的值是*(p++)而不是(*p)++,因为一元运算符是从右到左绑定的“。 但在这样做之后,几乎没有发生任何信息在这些链接中提到。 在上面的实验中,只有在语句结束符之后才能看到post增量的效果。但是,如果对赋值运算符的右操作数执行post增量,则即使在