【问题标题】:How to know which condition was true in an if statement?如何知道 if 语句中哪个条件为真?
【发布时间】:2014-02-11 15:37:44
【问题描述】:

我如何知道 JavaScript 中 if 语句中的哪个条件为真?

if(a === b || c === d){ console.log(correctValue) }

我怎么知道是a === b 还是c === d

编辑:我想知道除了检查每个条件自己的 if 语句之外是否还有其他方法。

【问题讨论】:

  • 想知道它是否可能,我知道一些JavaScript,但只是表面,所以我认为“这可能存在”,搜索它并没有发现任何东西,所以我在这里。
  • 你可以返回值吗?

标签: javascript conditional-statements


【解决方案1】:

如果您真的需要知道哪个条件为真,只需分别测试:

if(a == b) {
    console.log("a == b");
    return true; 
} else if(c == d) {
    console.log("c == d");
    return true; 
}

或者,您可能更喜欢这样的东西:

var result;
if ((a == b && result = "a == b") || (c == d && result = "c == d")) {
    console.log(result);
    return true;
}

此代码实际上等同于前者,但是,我不建议在生产系统中使用它。阅读和猜测代码的原始意图要困难得多——阅读此代码的人可能会认为result = 应该是result ==。还要注意,因为空字符串是假的,所以必须确保分配给result的字符串永远不会为空,否则永远不会进入if-block。

【讨论】:

  • 有什么办法不分开做?
  • 我认为可能有更好的方法,例如 if(a === b || c === d){ console.log(truthy) },但我想没有。
【解决方案2】:

你不能。
如果它很重要,它需要是两个不同的条件。

if (a == b) {
  // it was a == b
  return true;
}

if (c == d) {
  // it was c == d
  return true;
}

请注意,即使如此,您也不会知道这两种情况还是只有一种为真。
如果你也想知道这一点,你需要一个额外的if

if (a == b && c == d) {
  // a == b and c == d
} else if (a == b) {
  // just a == b
} else if (c == d) {
  // just c == d
}

return (a == b || c == d);

【讨论】:

  • 如果你去掉第一个中的“return”,你就可以知道两者都是真的还是只有一个是真的,对吧?
  • @AdriánSalgado 不是真的,除非我再次检查 a == bc == d 中。这就是我在第二个示例中使用else ifs 并事先检查这两个条件的原因。
  • 我的意思是,你可以去 if (a === b){ console.log("a equals b");} if(c === d){ console.log("c等于 d"); } :)
猜你喜欢
  • 2012-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-04
  • 1970-01-01
  • 2016-10-03
相关资源
最近更新 更多