JavaScript中的“ elseif”语法


Answers:


507

JavaScript的elseif格式为“ else if”,例如:

if (condition) {

} else if (other_condition) {

} else {

}

28
当人们问这样的问题时..我认为这表明了根本的误解。有了ifelse真的没有必要elseif
mpen

14
@Mark,我同意...但是有时候会把我弄糟,因为我已经习惯了带有elseif的语言。我知道这是相同的,但是我不知道javascript的原因是将其省略。不过,我很高兴他们没有使用elif,因为那是错误的:)
Jay K

16
@JayK:哈哈.. PHP已经elseif,perl elsif(我认为)和Python已经elif..这种情况一开始让我很烦,但是...我想这有点可爱。不过,它在Python和PHP中确实有一点用处,因为否则它们将无法使用冒号语法。
mpen 2012年

6
@Mark它更显示出对括号的误解。括号对于if/ else块来说不是必需的,但是鼓励人们使用它们,因此我可以理解为什么对于新用户来说这看起来不正确。

46
@Mark声称永远没有理由使用“ else if”是不正确的。如果语句类似于使用“ switch”,那么它将允许进行更详细的比较。当然,开关仅允许非常简单的比较。因此,是的,使用if绝对有充分的理由。
jolsen

49

只需添加一个空格:

if (...) {

} else if (...) {

} else {

}

33

您可以使用以下功能上等效的语法:

switch (true) {
  case condition1:
     //e.g. if (condition1 === true)
     break;
  case condition2:
     //e.g. elseif (condition2 === true)
     break;
  default:
     //e.g. else
}

之所以可行,condition是因为在与该switch值进行比较之前已对每个值进行了完全评估,因此第一个被评估为的值true将匹配并且其分支将执行。只要您记得使用break,后续分支将不会执行。

请注意,由于使用了严格的比较,因此不会执行condition仅“真实” 的分支。您可以使用双重否定为赋予真实价值:。true!!condition


这在功能上不等同于AFAIK。您在条件中可以输入的内容非常有限,switch (true)甚至没有任何意义。
zwol 2015年

2
我承认一开始看起来很奇怪,但它是等效的。条件可以是任何您喜欢的条件(包括函数调用等),如果true条件满足,则将满足该条件-完全一样else if
塔林2015年

5
哦,我知道你现在在做什么。那真是太聪明了。(我添加了一段解释其工作原理的段落,以便我可以收回我的
不赞成投票权

1
这是一个非常简单,干净且优雅的解决方案,用于条件列表超过1个“ else if”的条件
Steve Goossens 2015年

4
如果条件不返回布尔值,例如if([]) alert('a')产生警报但switch(true){case []:alert('a')}不返回,则不完全相等。这是因为[]它是真实值,但不等于true@zwol在此编辑中解释的值。
Oriol

13

实际上,从技术上讲,如果缩进正确,它将是:

if (condition) {
    ...
} else {
    if (condition) {
        ...
    } else {
        ...
    }
}

没有 else if严格来讲,。

(更新:当然,如前所述,上面的样式被认为是好的样式。)


1
您可以而且应该写成this if (condition1) { ... } else if (condition2) { ... } else { ... }
zwol 2015年

4
本质上,使用时else if实际上是省略了可选块{...}。我基于EMCAScriptMDN进行引用..
skube 2015年

13
就语言的形式语法而言,您是正确的,但您的答案可能会给人以else { if ... }良好风格的错误印象。
zwol 2015年

1
zwol说了什么。这就是你(skube)的意思。然后就是你所说的。
Gerard ONeill


2

条件语句用于根据不同的条件执行不同的操作。

使用if指定的代码块将被执行,如果一个指定的条件是真

使用else指定的代码块将被执行,如果相同的条件为假

使用else if指定一个新的条件测试,如果第一个条件为假


1
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') 

0

您在else和之间缺少空格if

应该else if代替elseif

if(condition)
{

} 
else if(condition)
{

}
else
{

}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.