javascript - 我是否需要 `else` 语句中的最后一个 `if...else if` 子句?

标签 javascript if-statement conditional

<分区>

每个 if...else if我见过的示例包括一个最终的 else子句:

if (condition1) {
  doA();
} else if (condition2) {
  doB();
} else if (condition3) {
  doC();
} else {
  noConditionsMet();
}
alwaysDoThis();

我知道这基本上是嵌套 if...else 的语法糖声明:

if (condition1) {
  doA();
} else {
  if (condition2) {
    doB();
  } else {
    if (condition3) {
      doC();
    } else {
      noConditionsMet();
    }
  }
}
alwaysDoThis();

我从未见过 if...else if 的任何例子省略了最后一个 else条款。但看起来很简单 if语句(没有 else 子句)是有效的,并且按照上面等效的“嵌套语句”,我的直觉告诉我这样做是可以的:

if (condition1) {
  doA();
} else if (condition2) {
  doB();
} else if (condition3) {
  doC();
}
alwaysDoThis();

谁能给我指出明确说明其是否有效的资源或示例?

在另一个层面上,如果它有效,它会被推荐还是被认为是“不好的做法”?

最佳答案

就 JavaScript 而言,结尾的 else 不是强制性的。至于是否需要,就看你想达到什么目的了。

尾随的 else 子句将在指定条件都不为真时执行。如果条件是collectively exhaustive ,那么 else 子句就完全多余了,除非它可能包含一个捕捉“不可能”条件的断言。在您的情况下,是否需要 else 子句取决于当且仅当 condition1condition2、和 condition3 为真。

else 可以省略 任何 if 语句,最后一个 if 没有什么特别的if/else if 链。这在任何 JavaScript 语法中都有记录,例如在 the specification .

关于javascript - 我是否需要 `else` 语句中的最后一个 `if...else if` 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38536554/

相关文章:

java - 在java中有条件地使用getType测试子类

javascript - 在手持/智能设备上使用不同浏览器时的屏幕宽度问题

javascript - 如何检查输入框是否有相同的值

ruby - ruby 中有 each_if 吗?

javascript - 多条件语句 JavaScript

javascript - 如果函数中的语句不起作用

java - 如何将 if-else 语句与函数返回一起使用?

JavaScript 数组以圆圈重新排序

javascript - 在 Internet Explorer 和 Safari 中调试 JavaScript

matlab - MATLAB 中的条件 "Or"语句