这个问题已经在这里有一个答案:
我见过的每一个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
不是强制性的。至于是否需要它,它取决于你想要达到的目标。
当没有指定条件为真后else
子句就会执行。如果条件保证是collectively exhaustive,那么else
子句完全是多余的,除了可能以包含捕获“不可能”的条件的断言。在你的情况,你是否需要else
条款取决于您是否要特定的代码运行,当且仅当没有condition1
,condition2
和condition3
都是真实的。
else
可以为任何if
声明被忽略,没有什么特别在if
/ if
链的最后else if
。这在任何JavaScript语法记载,例如在the specification。
你永远需要一个else
条款。 (很难提供的东西是没有必要的例子,所以我会留在这。)
编辑的评论指出,方括号中的语言语法符号通常表明什么是可选的。
它是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
...
}
无需其他一个块,他们是不是如果else语句,但是如果语句。考虑别的,ELSEIF作为扩展。
这里有一个sitepoint线程的链接:click this。和计算器上类似的线程:click here