我见过的每个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();
有人可以指向我明确说明它是否有效的资源或示例吗?
另一方面,如果 有效,是推荐还是被认为是“不良做法”?
答案 0 :(得分:9)
您永远不会需要 else
条款。 (很难提供一些不必要的例子,所以我将其留在那里。)
编辑作为注释注释,语言符号中的方括号通常表示某些内容是可选的。
答案 1 :(得分:8)
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
...
}
答案 2 :(得分:5)
结尾else
不是强制性的。至于是否需要,这取决于你想要达到的目标。
当没有指定的条件为真时,将执行尾随else
子句。如果条件保证为collectively exhaustive,则else
子句完全是多余的,除非可能包含一个捕获“不可能”条件的断言。在您的情况下,您是否需要else
子句取决于您是否希望特定代码在condition1
,condition2
和condition3
均为真时运行。
else
语句, if
可以省略,if
/ {{1}的最后if
没有什么特别之处链。这在任何JavaScript语法中都有记录,例如:在the specification。
答案 3 :(得分:1)
不需要else块,它们不是if else语句而是if语句。考虑其他,否则作为扩展。
这是指向网站点线程的链接:click this。 stackoverflow上有一个类似的线程:click here