为了账号安全,请及时绑定邮箱和手机立即绑定

为什么要避免JavaScript中的增量(“+”)和递减(“-”)操作符?

为什么要避免JavaScript中的增量(“+”)和递减(“-”)操作符?

慕雪6442864 2019-06-26 15:31:20
为什么要避免JavaScript中的增量(“+”)和递减(“-”)操作符?其中之一Jslint工具提示是:+和-众所周知,+(增量)和-(递减)运算符通过鼓励过度的诡计而导致了错误的代码。在防范病毒和其他安全威胁方面,它们仅次于错误的架构。有一个plusplus选项禁止使用这些操作符。我知道PHP构造像$foo[$bar++]很容易导致错误,但我想不出比一个更好的控制循环的方法了。while( a < 10 ) do { /* foo */ a++; }或for (var i=0; i<10; i++) { /* foo */ }.是jslint突出显示它们,因为有一些类似的语言缺少++“和”--语法或处理方式不同,或有其他避免的理由++“和”--“我可能失踪了?
查看完整描述

3 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

我的观点是总是在单行上使用+和-单独使用,如:

i++;array[i] = foo;

而不是

array[++i] = foo;

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


查看完整回答
反对 回复 2019-06-26
?
萧十郎

TA贡献1815条经验 获得超13个赞

坦率地说,我被这条建议搞糊涂了。我有一部分想知道,这是否与javascript编码器缺乏经验(感知的或实际的)有更多的关系。

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


查看完整回答
反对 回复 2019-06-26
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

C语言有这样的历史:

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

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

总有一个问题是

++i = i++;

i = i++ + ++i;

实际上是这样。它是用某些语言定义的,而在另一些语言中,无法保证会发生什么。

撇开这些例子不说,我认为没有什么比使用for循环更实用的了++增加。在某些情况下,您可以使用foreach循环,也可以使用while循环检查不同的容忍度。但是,扭曲代码以避免使用增量是荒谬的。


查看完整回答
反对 回复 2019-06-26
  • 3 回答
  • 0 关注
  • 486 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信