在 if...else if 语句中是否需要最后一个 else 子句?
Do I need a last `else` clause in an `if...else if` statement?
我见过的每个 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();
谁能给我指出明确说明其是否有效的资源或示例?
在另一个层面上,如果它 是 有效的,它会被推荐还是被认为是“不好的做法”?
您永远不需要 else
子句。 (很难提供一些不必要的例子,所以我就此打住。)
edit作为注释,语言语法符号中的方括号通常表示某些东西是可选的。
100%有效。不,这不是坏习惯。如果你不需要它,就不要写它。
以下面为例:
function doStuff(data) {
if (data.something) {
// go format the data in some way
}
else if (data.somethingElse) {
// go format the data in some other way
}
// must be formatted correctly, don't do anything else
...
}
就 JavaScript 而言,结尾 else
不是强制性的。至于是否需要,就看你想达到什么目的了。
当指定条件中的 none 为真时,将执行尾随的 else
子句。如果条件是 collectively exhaustive,那么 else
子句完全是多余的,除了可能包含捕获“不可能”条件的断言。在您的情况下,是否需要 else
子句取决于您是否希望特定代码 运行 当且仅当 condition1
、condition2
和 [=16= 都不是] 是真的。
else
可以省略 any if
语句,[=18= 的最后一个 if
没有什么特别的]/else if
链。这在任何 JavaScript 语法中都有记录,例如在 the specification.
不需要 else 块,它们不是 if else 语句而是 if 语句。考虑else,elseif作为扩展。
这里是一个 link 到站点主题的帖子:click this。
Whosebug 上的类似线程:click here
我见过的每个 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();
谁能给我指出明确说明其是否有效的资源或示例?
在另一个层面上,如果它 是 有效的,它会被推荐还是被认为是“不好的做法”?
您永远不需要 else
子句。 (很难提供一些不必要的例子,所以我就此打住。)
edit作为注释,语言语法符号中的方括号通常表示某些东西是可选的。
100%有效。不,这不是坏习惯。如果你不需要它,就不要写它。
以下面为例:
function doStuff(data) {
if (data.something) {
// go format the data in some way
}
else if (data.somethingElse) {
// go format the data in some other way
}
// must be formatted correctly, don't do anything else
...
}
就 JavaScript 而言,结尾 else
不是强制性的。至于是否需要,就看你想达到什么目的了。
当指定条件中的 none 为真时,将执行尾随的 else
子句。如果条件是 collectively exhaustive,那么 else
子句完全是多余的,除了可能包含捕获“不可能”条件的断言。在您的情况下,是否需要 else
子句取决于您是否希望特定代码 运行 当且仅当 condition1
、condition2
和 [=16= 都不是] 是真的。
else
可以省略 any if
语句,[=18= 的最后一个 if
没有什么特别的]/else if
链。这在任何 JavaScript 语法中都有记录,例如在 the specification.
不需要 else 块,它们不是 if else 语句而是 if 语句。考虑else,elseif作为扩展。
这里是一个 link 到站点主题的帖子:click this。 Whosebug 上的类似线程:click here