Syntax "elseif" in JavaScript


Antworten:


507

Das elseif von JavaScript hat das Format "else if", z.

if (condition) {

} else if (other_condition) {

} else {

}

28
Wenn Leute solche Fragen stellen ... Ich denke, das zeigt ein grundlegendes Missverständnis. Mit ifund elsegibt es wirklich keine Notwendigkeit elseif.
Mpen

14
@ Mark, ich stimme zu ... aber es bringt mich manchmal durcheinander, weil ich an Sprachen gewöhnt bin, die ein elseif haben. Ich weiß, dass es identisch ist, aber ich frage mich, warum Javascript es auslässt. Ich bin jedoch froh, dass sie elif nicht benutzt haben, weil das einfach falsch ist :)
Jay K

16
@ JayK: Haha ... PHP hat elseif, Perl hat elsif(glaube ich) und Python hat elif... diese Art hat mich zuerst geärgert, aber ... ich denke, es ist irgendwie süß. In Python und PHP erfüllt es jedoch einen geringfügigen Zweck, da es sonst mit der Doppelpunktsyntax nicht funktionieren würde.
Mpen

6
@Mark Es zeigt mehr ein Missverständnis der Klammerung. Klammern sind für if/ elseblocks nicht erforderlich , aber die Benutzer werden aufgefordert, sie zu verwenden, damit ich verstehen kann, warum dies für einen neuen Benutzer falsch aussieht.

46
@Mark Zu behaupten, dass es nie einen Grund gibt, "else if" zu verwenden, ist falsch. Andernfalls können Anweisungen, die der Verwendung von "switch" ähneln, detailliertere Vergleiche ermöglichen. Der Schalter erlaubt natürlich nur sehr einfache Vergleiche. Also ja, es gibt definitiv gute Gründe für die Verwendung von else if.
Jolsen

49

Fügen Sie einfach ein Leerzeichen hinzu:

if (...) {

} else if (...) {

} else {

}

33

Sie können diese Syntax verwenden, die funktional äquivalent ist:

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

Dies funktioniert, da jeder conditionvor dem Vergleich mit dem switchWert vollständig ausgewertet wird, sodass der erste Wert, der ausgewertet truewird, übereinstimmt und sein Zweig ausgeführt wird. Nachfolgende Verzweigungen werden nicht ausgeführt, sofern Sie daran denken, sie zu verwendenbreak .

Beachten Sie, dass ein strikter Vergleich verwendet wird, sodass ein Zweig, der conditionlediglich "wahr" ist, nicht ausgeführt wird. Sie können einen Wahrheitswert truemit doppelter Negation umsetzen : !!condition.


Dies ist keine funktional äquivalente AFAIK. Was Sie in die Bedingungen setzen können, ist viel begrenzter und switch (true)macht nicht einmal Sinn.
zwol

2
Ich gebe zu, es sieht auf den ersten Blick komisch aus, aber es ist gleichwertig. Die Bedingung kann beliebig sein (einschließlich Funktionsaufrufe oder was auch immer), und wenn sie ausgewertet wird, trueist dieser Fall erfüllt - genau wie else if.
Tamlyn

5
Oh, ich verstehe, was du jetzt machst. Das ist verdammt schlau. (Ich habe einen Absatz hinzugefügt, in dem erklärt wird, wie es funktioniert, damit ich meine Ablehnung zurückziehen kann.)
zwol

1
Dies ist eine sehr einfache, saubere und elegante Lösung für Bedingungslisten mit mehr als 1 "else if" -Bedingung
Steve Goossens

4
Nicht vollständig gleichwertig, wenn die Bedingungen keine Booleschen Werte zurückgeben, z. B. if([]) alert('a')die Warnung erzeugen, dies jedoch nicht tun switch(true){case []:alert('a')}. Das liegt daran, dass []es sich um einen wahrheitsgemäßen Wert handelt, der jedoch nicht gleich ist true, wie @zwol in dieser Bearbeitung erklärt hat .
Oriol

13

Eigentlich wäre es technisch gesehen, wenn es richtig eingerückt wäre:

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

else ifGenau genommen gibt es keine .

(Update: Natürlich wird das oben Gesagte, wie bereits erwähnt, nicht als guter Stil angesehen.)


1
Sie können und sollten dies schreiben if (condition1) { ... } else if (condition2) { ... } else { ... }.
zwol

4
Im Wesentlichen lassen Sie bei der Verwendung else ifden optionalen Block weg {...}. Ich bezog mich auf EMCAScript und MDN ..
Skube

13
In Bezug auf die formale Grammatik der Sprache sind Sie richtig, aber Ihre Antwort könnte den Menschen den falschen Eindruck vermitteln, dass dies else { if ... }ein guter Stil ist.
zwol

1
Was zwol gesagt hat. Es gibt das, was du (skube) gemeint hast. Und dann gibt es das, was du gesagt hast.
Gerard ONeill

6
if ( 100 < 500 ) {
   //any action
}
else if ( 100 > 500 ){
   //any another action
}

Einfach, Platz nutzen


2

Bedingte Anweisungen werden verwendet, um verschiedene Aktionen basierend auf verschiedenen Bedingungen auszuführen.

Verwenden Sie ifdiese Option, um einen Codeblock anzugeben, der ausgeführt werden soll, wenn eine bestimmte Bedingung erfüllt ist

Verwenden Sie elsediese Option, um einen Codeblock anzugeben, der ausgeführt werden soll, wenn dieselbe Bedingung falsch ist

Verwenden Sie else ifdiese Option, um eine neue zu testende Bedingung anzugeben, wenn die erste Bedingung falsch ist


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

Ihnen fehlt ein Leerzeichen zwischen elseundif

Es sollte else ifstatt seinelseif

if(condition)
{

} 
else if(condition)
{

}
else
{

}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.