【问题标题】:Incrementing variables inside conditional statements在条件语句中递增变量
【发布时间】:2015-11-03 09:31:38
【问题描述】:

所以,我最近认为我真的很聪明(我学到的东西在编程时并不总是一个好的特质)并试图重构这样的东西:

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

变成这样的

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

但我立即被告知我不应该这样做,我不得不将递增的计数器向上移动一行。

我在互联网上搜索了有关该主题的信息,并在 MDN 上找到了几页,其中最相关的说法是 "The increment operator increments (adds one to) its operand and returns a value. [...] If used prefix with operator before operand (for example, ++x), then it returns the value after incrementing.",这似乎表明在条件语句中增加变量是完全合法的。我能找到的唯一一些相关的警告是关于simple assignment,例如if (x = y),但 if ((x = y)) 没问题。

我只是想就此获得一些其他意见。这是不好的做法还是完全有效?

谢谢

【问题讨论】:

  • 由于这不是一个有正确答案的问题,您应该在codereview.stackexchange.com 中提出您的问题。语义上没有区别,因此您的程序应该以相同的方式运行。
  • 有效的问题是代码难以阅读。在我看来,这不是一个好习惯。
  • 谁告诉你不应该这样做,朋友、同事、上司、堆栈溢出的另一个人?
  • @hgoebl 这是国际海事组织的边界线。从技术上讲,有一个答案,或者更确切地说,关于为什么一个比另一个更好的答案。我会说它更接近于固执己见的答案,但根据他对我上述问题的回答,我可能有一个实际的答案。此外,他在这方面表现出了真正的研究努力。
  • 这里有一个事实性问题,“这是不好的做法吗?”该问题的答案可以参考一些 Javascript 样式指南。

标签: javascript if-statement increment conditional-statements


【解决方案1】:

你说得对!您可以使用括号来表示您的增量!

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

这一定对你有帮助:)

【讨论】:

    最近更新 更多