在条件语句中递增变量

3

最近,我认为自己非常聪明(但在编程时,我已经学到这并不总是一个好品质),尝试重构类似这样的东西:

counter++
if (counter > something) {
    doThisCoolThing()
}

变成这样的东西

if (++counter > something) {
    doThisCoolThing()
}

但我立即被告知不应该这样做,必须将计数器递增的操作移回到上一行。

我在互联网上搜寻了有关这个主题的信息,找到了几页MDN的相关页面,其中最相关的说法是"递增运算符会将其操作数递增(加一),并返回一个值。[...] 如果使用前缀运算符(例如,++x)在操作数之前,则它返回递增后的值。", 这似乎表明在条件语句中递增变量是完全合法的。我能找到的唯一有点相关的警告是关于简单赋值的,例如 if (x = y),但if ((x = y))是可以的。

我只是想听听其他人对此的看法。这是不良实践还是完全有效的?

谢谢


由于这不是一个有正确答案的问题,您应该在http://codereview.stackexchange.com/上提出您的问题。从语义上讲没有区别,因此您的程序应该表现出相同的行为。 - hgoebl
那个程序可以运行,问题是代码很难读懂。在我看来,这不是一个好的实践。 - Raúl Martín
是谁告诉你不应该这样做的,是朋友、同事、上级还是 Stack Overflow 上的其他人? - Jamie Barker
@hgoebl 这在我看来有点微妙。从技术上讲,有一个答案,或者更确切地说,有很多个答案可以解释为什么其中一个更好。我认为这更倾向于主观性的回答,但根据他对我上面问题的回答,我可能会有一个实际的答案。此外,他已经表现出了真正的研究努力。 - Jamie Barker
这里有一个事实性的问题:「这是不好的做法吗?」回答这个问题可以参考几个Javascript风格指南。 - Purag
显示剩余2条评论
1个回答

0

你是对的!你可以使用括号来进行增量操作!

if((++a)>somthing){
 doSomthing();
}

这一定会对你有所帮助 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接