如何在 JavaScript 条件下实现 elseif?
在 JavaScript 的 if-then-else
中,技术上没有 elseif
分支。
但是如果你这样写它就可以了:
if (condition) {
} else if (other_condition) {
} else {
}
为了让实际发生的事情一目了然,您可以使用额外的一对 {
和 }
扩展上述代码:
if (condition) {
} else {
if (other_condition) {
} else {
}
}
在第一个示例中,我们使用了一些关于 {}
使用的隐式 JS 行为。如果里面只有一个语句,我们可以省略这些花括号。在此构造中就是这种情况,因为内部 if-then-else
仅算作一个语句。事实是,这些是 2 个嵌套的 if 语句。而不是一个有 2 个分支的 if 语句,因为它可能一见钟情。
这样,它类似于其他语言中的 elseif
。
这是一个风格和偏好的问题,你以哪种方式使用它。
只需添加一个空格:
if (...) {
} else if (...) {
} else {
}
您可以使用功能等效的此语法:
switch (true) {
case condition1:
//e.g. if (condition1 === true)
break;
case condition2:
//e.g. elseif (condition2 === true)
break;
default:
//e.g. else
}
这是有效的,因为在与 switch
值比较之前,每个 condition
都已被完全评估,因此第一个评估为 true
的将匹配并执行其分支。如果您remember to use break
,后续分支将不会执行。
请注意,使用了 strict 比较,因此 condition
仅仅是“真实”的分支将 不 被执行。您可以使用双重否定将真值转换为 true
:!!condition
。
switch (true)
甚至没有意义。
true
,那么将满足这种情况 - 与 else if
完全相同。
if([]) alert('a')
产生警报但 switch(true){case []:alert('a')}
不产生。这是因为 []
是一个真值但不等于 true
,正如 @zwol 在 this edit 中解释的那样。
实际上,从技术上讲,当缩进正确时,它将是:
if (condition) {
...
} else {
if (condition) {
...
} else {
...
}
}
严格来说,没有 else if
。
(更新:当然,正如所指出的那样,上述风格不被认为是好的。)
if (condition1) { ... } else if (condition2) { ... } else { ... }
。
else { if ... }
是好的风格。
if ( 100 < 500 ) {
//any action
}
else if ( 100 > 500 ){
//any another action
}
简单,利用空间
条件语句用于根据不同的条件执行不同的操作。
如果指定条件为真,则使用 if
指定要执行的代码块
使用 else
指定要执行的代码块,如果相同的条件为假
如果第一个条件为假,则使用 else if
指定要测试的新条件
x = 10;
if(x > 100 ) console.log('over 100')
else if (x > 90 ) console.log('over 90')
else if (x > 50 ) console.log('over 50')
else if (x > 9 ) console.log('over 9')
else console.log('lower 9')
您在 else
和 if
之间缺少一个空格
它应该是 else if
而不是 elseif
if(condition)
{
}
else if(condition)
{
}
else
{
}
if
和else
,确实不需要elseif
。elseif
,perl 有elsif
(我认为),Python 有elif
.. 起初这让我很恼火,但是......我想这有点可爱。不过,它在 Python 和 PHP 中确实起到了轻微的作用,因为否则它不能使用它们的冒号语法。if
/else
块不需要括号,但我们鼓励人们使用它们,所以我可以理解为什么这对新用户来说看起来不正确。