ChatGPT解决这个技术问题 Extra ChatGPT

JavaScript 中的“elseif”语法

如何在 JavaScript 条件下实现 elseif?


m
mit

在 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

这是一个风格和偏好的问题,你以哪种方式使用它。


当人们问这样的问题时..我认为这表明了一个根本的误解。有了 ifelse,确实不需要 elseif
@Mark,我同意......但有时它会让我感到困惑,因为我习惯了有 elseif 的语言。我知道它是相同的,但我想知道 javascript 将它排除在外的原因是什么。然而,我很高兴他们没有使用 elif,因为那是错误的 :)
@JayK:哈哈.. PHP 有 elseif,perl 有 elsif(我认为),Python 有 elif .. 起初这让我很恼火,但是......我想这有点可爱。不过,它在 Python 和 PHP 中确实起到了轻微的作用,因为否则它不能使用它们的冒号语法。
@Mark 它更多地显示了对括号的误解。 if/else 块不需要括号,但我们鼓励人们使用它们,所以我可以理解为什么这对新用户来说看起来不正确。
@Mark 声称永远没有理由使用“else if”是不正确的。 Else if 语句类似于使用“switch”,但它允许进行更精细的比较。当然,Switch 只允许非常简单的比较。所以是的,使用 else if 绝对有充分的理由。
I
Inanc Gumus

只需添加一个空格:

if (...) {

} else if (...) {

} else {

}

T
Tamlyn

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

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


这在功能上不等同于 AFAIK。您可以放入条件中的内容要有限得多,switch (true) 甚至没有意义。
我承认它起初看起来很奇怪,但它是等价的。条件可以是您喜欢的任何东西(包括函数调用或其他),如果它的计算结果为 true,那么将满足这种情况 - 与 else if 完全相同。
哦,我明白你现在在做什么。这真是太聪明了。 (我添加了一段解释它是如何工作的,这样我就可以收回我的反对票。)
对于具有多个“else if”条件的条件列表,这是一个非常简单、干净和优雅的解决方案
如果条件不返回布尔值,则不完全等效,例如 if([]) alert('a') 产生警报但 switch(true){case []:alert('a')} 不产生。这是因为 [] 是一个真值但不等于 true,正如 @zwol 在 this edit 中解释的那样。
s
skube

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

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

严格来说,没有 else if

(更新:当然,正如所指出的那样,上述风格不被认为是好的。)


您可以并且应该编写此 if (condition1) { ... } else if (condition2) { ... } else { ... }
本质上,当使用 else if 时,您实际上省略了可选块 {...}。我基于 EMCAScriptMDN 引用..
就语言的形式语法而言,您是正确的,但您的回答可能会给人们一种错误的印象,即 else { if ... } 是好的风格。
zwol 说的。这就是你(skube)的意思。然后就是你所说的。
I
IdemeNaHavaj
if ( 100 < 500 ) {
   //any action
}
else if ( 100 > 500 ){
   //any another action
}

简单,利用空间


A
A.A Noman

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

如果指定条件为真,则使用 if 指定要执行的代码块

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

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


z
zloctb
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') 

c
codemirror

您在 elseif 之间缺少一个空格

它应该是 else if 而不是 elseif

if(condition)
{

} 
else if(condition)
{

}
else
{

}