Javascript中的递增/递减运算符是不是被认为是错误的形式? [复制]

Posted

技术标签:

【中文标题】Javascript中的递增/递减运算符是不是被认为是错误的形式? [复制]【英文标题】:Are increment/decrement operators considered bad form in Javascript? [duplicate]Javascript中的递增/递减运算符是否被认为是错误的形式? [复制] 【发布时间】:2011-11-06 22:10:32 【问题描述】:

可能重复:Why avoid increment ("++") and decrement ("--") operators in javascript?

我最近一直在通过 JSLint 运行我的所有 javascript,它总是在我的增量运算符上给我 Unexpected '++'。我还注意到 tolerate ++/--.

有一个 JSLint 选项

使用i++/i--是否被认为是不好的形式?

【问题讨论】:

这个 imo 只是 Crockfords 的个人喜好。我不会很快停止使用 ++ 或 -- 。 【参考方案1】:

如果我理解正确,它在 JSLint 中的原因是因为 ++ii++ 之间存在显着差异,并且许多开发人员不一定会理解具体何时完成添加的含义,相对于到它周围的其他操作。

例如:

var i = 0;
if(i++) 
    //does this get run or not?

if(--i) 
    //and what about this one?

这就是为什么 Crockford 认为这是不好的做法,并且更喜欢更明确的 +=1

但是,总的来说,++ 没有这种问题;我非常乐意使用它,而且我会忽略 JSLint 告诉我不要(大多数时候!)。

这是 JSLint 的重要之处——它不会告诉你实际的错误;它告诉你的一切都是一个建议。其中一些是很好的建议(例如,你永远不应该使用with);有些是很好的建议,表明代码很差;其中一些在某些时候只是一个问题,应该单独考虑。作为开发人员,您需要知道它为什么提出建议比实际修复它们更重要。一旦您了解了它们被指出的原因,您就可以自己决定代码中的给定实例是否存在问题以及如何解决它。

希望对您有所帮助。

【讨论】:

【参考方案2】:

不,我想这可能会引起争论,但说真的,一切都会在他们的教育或书籍或其他任何东西中很快了解这个操作员。这个建议让我很恼火。

【讨论】:

我 100% 同意。我认为将 Crockford 的个人品味添加到 JSLint 中。我也不同意他在每一行都有一个单独的var,但这是一个不同的讨论。 我同意。作为一名 javascript 开发人员,我只是想提高自己,这让我觉得很奇怪。【参考方案3】:

我不认为它在 Javascript 中被特别认为是不好的形式,大多数程序员通常很难正确使用这些运算符。

【讨论】:

你能举一个错误使用它的例子吗?我一直使用它没有问题,但现在我很好奇我是否曾经错误地使用它。 你必须记住增量发生的顺序是什么时候值变得可用。如果您只使用过它本身或以惯用的表达方式使用它,那么您不太可能误用它。但是像var x = i++ * 3; 这样的操作可能会带来惊喜,而使用i + 1i += 1 是不可能的。【参考方案4】:

使用+=/-= 被认为是更好的做法,而不是使用++/--

x += 1; 而不是x++;

这应该是为了提高可读性并避免由于过度使用“代码技巧”而导致的打字错误。

我个人觉得使用这种方法而不是默认的 ++/-- 操作符更有用,因为数字将被 IDE 着色并且更容易发现。

【讨论】:

以上是关于Javascript中的递增/递减运算符是不是被认为是错误的形式? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript运算符:递增和递减(++i,--i 和 i++,i-- 的区别)

将递增/递减运算符放在三元/条件运算符中是不是安全?

JavaScript运算符:递增递减运算符前置和后置的区别

在啥情况下(如果有),C 中前缀和后缀递增/递减运算符之间的性能是不是存在差异? [复制]

java中的递增和递减运算符

PHP中的递增/递减运算符