JavaScript中的"elseif"语法

Har*_*ala 261 javascript syntax if-statement

它是否正确?

if(condition)
{

} 
elseif(condition)
{

}
else
{

}
Run Code Online (Sandbox Code Playgroud)

Jef*_*eff 492

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

if (condition) {

} else if (other_condition) {

} else {

}
Run Code Online (Sandbox Code Playgroud)

  • @Mark声称没有理由使用"else if"是不正确的.否则,如果陈述类似于使用"切换",则它将允许更精细的比较.当然,开关只允许非常简单的比较.所以是的,如果使用else,肯定有充分的理由. (42认同)
  • 当人们提出这样的问题时......我认为这显示出一种根本的误解.使用`if`和`else`确实不需要`elseif`. (27认同)
  • @Mark,我同意......但它有时会让我感到困惑,因为我已经习惯了拥有elseif的语言.我知道它是完全相同的,但我想知道javascript的原因是什么.不过,我很高兴他们没有使用elif,因为那是错的:) (14认同)
  • @JayK:哈哈.. PHP有`elseif`,perl有`elsif`(我想),而且Python有`elif` ..起初让我很生气,但是...我猜它有点可爱.但它确实在Python和PHP中起到了一定的作用,因为它不适用于冒号语法. (14认同)
  • @Mark它更多地表明了对包围的误解.对于`if` /`else`块不需要括号,但鼓励人们使用它们,所以我可以理解为什么这对新用户看起来不正确. (6认同)
  • Mark通过提出一个对于要求有多种语言经验的人来说很正常的问题,显示出对其他语言和语言设计缺乏经验.即使像许多其他问题一样,他也可以用谷歌搜索它.:)在许多语言中,elseif作为紧凑的开关/ case语句提供(并实现).JS缺乏这一点,并取代了一个令人尴尬的开关声明,让任何人都不高兴. (4认同)
  • @jolsen我特意将`elseif`作为单个关键字."if if"有很多用途. (3认同)
  • 它也有助于理解为什么这样做.如果你在javascript中省略``}`的`if` /`else`语句,解析器只将它应用于下一个语句.所以:`else if {...}`和`else {if {...}}`相同. (3认同)

jMy*_*les 49

只需添加一个空格:

if (...) {

} else if (...) {

} else {

}
Run Code Online (Sandbox Code Playgroud)


Tam*_*lyn 31

您可以使用功能相同的语法:

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

这是有效的,因为condition在与switch值进行比较之前,每个都被完全评估,因此第一个计算结果true将匹配并且其分支将执行.如果您记得使用break,后续分支将不会执行.

请注意,使用严格比较,因此不会执行condition仅仅是"真实" 的分支.你可以用双重否定来表达一个真实的价值:.true!!condition

  • 哦,我明白你现在在做什么.那非常聪明.(我添加了一段解释它是如何工作的,所以我可以撤回我的downvote.) (4认同)
  • 如果条件不返回布尔值,则不完全等效,例如`if([])alert('a')`产生警报但是`switch(true){case []:alert('a')}`doesn'吨.那是因为`[]`是一个真正的值,但不等于`true`,正如@zwol在[this edit]中所解释的那样(http://stackoverflow.com/revisions/26676790/2). (4认同)
  • 我承认起初它看起来很奇怪,但它是等价的.条件可以是你喜欢的任何东西(包括函数调用或其他),如果它的计算结果为'true`,那么这个情况就会得到满足 - 就像`else if`一样. (2认同)

sku*_*ube 12

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

if (condition) {
    ...
} else {
    if (condition) {
        ...
    } else {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

else if严格来说,没有.

(更新:当然,正如所指出的,以上被认为是好的风格.)

  • 就语言的形式语法而言,你是对的,但是你的回答可能给人们一种错误的印象,即'else {if ...}`是好的风格. (12认同)
  • 本质上,当使用`else if`时,你实际上省略了可选块`{...}`.我根据[EMCAScript](http://www.ecma-international.org/ecma-262/5.1/#sec-12.5)和[MDN](https://developer.mozilla.org/en-US)进行了参考/docs/Web/JavaScript/Reference/Statements/if...else#Description).. (4认同)

Ide*_*vaj 6

if ( 100 < 500 ) {
   //any action
}
else if ( 100 > 500 ){
   //any another action
}
Run Code Online (Sandbox Code Playgroud)

容易,使用空间