【问题标题】:Is there a logical difference between these two if blocks?这两个 if 块之间有逻辑上的区别吗?
【发布时间】:2014-08-21 14:04:36
【问题描述】:

我相当肯定这两种方法都应该完成同样的事情。由于某种原因,第一个永远不会进入最里面的块。如果条件匹配,第二种方法将返回 false。将增量器置于 if 条件时会发生什么变化?

if (item.Reject)
{
    rejectCount++

    if (rejectCount >= maxRejects)
    {
        return false;
    }
}
else rejectCount = 0;

第二种方法:

if (item.Reject)
{
    if (++rejectCount >= maxRejects)
    {
        return false;
    }
}
else rejectCount = 0;

【问题讨论】:

  • 它们在逻辑上看起来与我相同。两者都在 if 语句被评估之前递增。

标签: javascript if-statement logic


【解决方案1】:

根据我刚刚写来测试它的 Jsfiddle,他们做的事情完全相同。 我简化了它以测试条件。但它服务于目的

var rejectCount = 0;
var maxRejects = 2;

function incr1() {
    rejectCount++;
    if (rejectCount >= maxRejects) {
      //  return false;
    }

    alert(rejectCount);
}

function incr2() {
    if (++rejectCount >= maxRejects) {
      //  return false;
    }
    alert(rejectCount);
}

http://jsfiddle.net/durbnpoisn/j23uhfr0/

【讨论】:

  • 我也是这么想的,只是想要第二个意见。我想我的大脑还在苏醒。
  • 酷。这部分是我测试我的新 Jsfiddle 帐户的借口。真漂亮。
【解决方案2】:

您能否提供用于 maxRejects 的值?

两种方法都是一样的,第一个例子没有理由不进入最里面的块。

【讨论】:

  • 这个值是任意的,比如 15。我想确保我没有发疯。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-26
  • 1970-01-01
  • 2012-02-28
  • 2019-08-26
  • 1970-01-01
  • 1970-01-01
  • 2014-06-02
相关资源
最近更新 更多