JavaScriptの「elseif」構文


回答:


507

JavaScriptのelseifの形式は「else if」です。例:

if (condition) {

} else if (other_condition) {

} else {

}

28
このような質問をすると…根本的な誤解をしていると思います。ifし、else実際の必要はありませんelseif
mpen

14
@マーク、同意します...しかし、elseifを使用する言語に慣れているため、時々混乱します。私はそれが同じであることを知っていますが、JavaScriptを除外する理由は何なのでしょうか。しかし、私は彼らがelifを使用しなかったことをうれしく思います。それは間違っているからです。)
Jay K

16
@JayK:ハハ.. PHPはelseif、perlはelsif(私はそう思います)、Pythonはelif..最初はそのようなことで私を苛立たせましたが...ちょっとかわいいと思います。PythonとPHPでは、コロン構文を使用しないと機能しないため、これはわずかな目的で使用されます。
mpen

6
@Markブラケットの誤解をさらに示しています。ブラケットはif/ elseブロックに必要ではありませんが、人々はそれらを使用することが推奨されているので、これが新しいユーザーにとって正しくないように見える理由を理解できます。

46
@Mark「else if」が正しくない理由は決してないと主張する。そうでなければ、ステートメントが "switch"を使用するのと似ていますが、より複雑な比較が可能になります。もちろん、スイッチは非常に単純な比較のみを可能にします。そう、そうでなければ、else ifを使用することには間違いなく正当な理由があります。
jolsen 2015

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
}

これが機能するのは、それぞれconditionswitch値と比較される前に完全に評価されるため、最初に評価されたものtrueが一致し、その分岐が実行されるためです。を使用するbreakことを忘れない限り、後続のブランチは実行されません。

厳密な比較が使用されるため、condition単に「真実」である分岐は実行されないことに注意してください。あなたはtrue二重否定で真の値をキャストすることができます:!!condition


これは機能的に同等のAFAIKではありません。条件に入れることができるものははるかに制限されており、switch (true)意味がありません。
zwol 2015

2
最初は奇妙に見えますが、同等です。条件は好きなもの(関数呼び出しなど)にすることができ、それが評価されtrueた場合、そのケースが満たされます-とまったく同じelse ifです。
タムリン2015

5
ああ、私はあなたが今何をしているのかわかります。それはかなり賢いです。(私はそれがどのように機能するかを説明する段落を追加したので、私は自分の反対票を撤回することができました。)
zwol 2015

1
これは、1つ以上の「else if」条件を持つ条件リストの非常にシンプルでクリーンでエレガントなソリューションです
Steve Goossens 2015年

4
条件がブール値を返さない場合、完全に同等ではありません。たとえばif([]) alert('a')、アラートは生成されますが、返されswitch(true){case []:alert('a')}ません。これ[]は、@zwolがこの編集でtrue説明したように、は真の値ですが、と等しくないためです。
Oriol

13

実際には、技術的に適切にインデントすると、次のようになります。

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

else if厳密にはありません。

(更新:もちろん、指摘したように、上記は良いスタイルと見なされません。)


1
あなたはこれを書くことができ、そうすべきif (condition1) { ... } else if (condition2) { ... } else { ... }です。
zwol 2015

4
本質的にelse ifあなたが使用するとき、あなたは実際にオプションのブロックを省略しています{...}EMCAScriptMDNに基づいて参照していた..
skube

13
言語の正式な文法の点では、あなたは正しいですが、あなたの答えは人々にelse { if ... }良いスタイルである誤った印象を与えるかもしれません。
zwol 2015

1
ズウォルが言ったこと。あなた(skube)の意味するところがあります。そして、あなたが言ったこともあります。
ジェラールONeill


2

条件ステートメントは、さまざまな条件に基づいてさまざまなアクションを実行するために使用されます。

if指定された条件が真の場合に、実行されるコードのブロックを指定するために使用します

使用する else同じ条件がfalseの場合に実行されるコードのブロックを指定するためにします

else if最初の条件がfalseの場合、テストする新しい条件を指定するために使用します


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
{

}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.