So verwenden Sie die switch-Anweisung in JavaScript

Einführung

Bedingte Anweisungen gehören zu den nützlichsten und allgemeinsten Merkmalen aller Programmiersprachen. “https://www.digitalocean.com/community/tutorials/how-to-write-conditional-statements-in-javascript[How To Write Conditional Statements in JavaScript]” describes how to use the if, else, and else if keywords to control the flow of a program based on different conditions, which in JavaScript are often the result of user input.

Zusätzlich zuif...else verfügt JavaScript über eine Funktion, die alsswitch-Anweisung bezeichnet wird. switch ist eine Art bedingter Anweisung, die einen Ausdruck anhand mehrerer möglicher Fälle bewertet und einen oder mehrere Codeblöcke basierend auf übereinstimmenden Fällen ausführt. Die Anweisungswitch ist eng mit einer bedingten Anweisung verwandt, die vieleelse if-Blöcke enthält, und sie können häufig austauschbar verwendet werden.

In diesem Tutorial erfahren Sie, wie Sie die Anweisungswitch sowie die zugehörigen Schlüsselwörtercase,break unddefault verwenden. Abschließend erfahren Sie, wie Sie mehrere Fälle in einerswitch-Anweisung verwenden.

Schalter

Die Anweisungswitchwertet einen Ausdruck aus und führt Code als Ergebnis eines übereinstimmenden Falls aus. Anfangs kann es ein wenig einschüchternd aussehen, aber die grundlegende Syntax ähnelt der einerif-Anweisung. Es wird immer mitswitch () {} geschrieben, mit Klammern, die den zu testenden Ausdruck enthalten, und geschweiften Klammern, die den möglicherweise auszuführenden Code enthalten.

Unten sehen Sie ein Beispiel für eineswitch-Anweisung mit zweicase-Anweisungen und einem alsdefault bekannten Fallback.

switch (expression) {
    case x:
        // execute case x code block
        break;
    case y:
        // execute case y code block
        break;
    default:
        // execute default code block
}

Nach der Logik des obigen Codeblocks ist dies die Folge von Ereignissen, die stattfinden werden.

  • Der Ausdruck wird ausgewertet

  • Die erstencase,x werden gegen den Ausdruck getestet. Wenn es übereinstimmt, wird der Code ausgeführt und das Schlüsselwortbreak beendet den Blockswitch.

  • Wenn es nicht übereinstimmt, wirdx übersprungen und der Fally wird gegen den Ausdruck getestet. Wenny mit dem Ausdruck übereinstimmt, wird der Code ausgeführt und verlässt den Blockswitch.

  • Wenn keiner der Fälle übereinstimmt, wird der Codeblockdefaultausgeführt.

Lassen Sie uns ein funktionierendes Beispiel für eineswitch-Anweisung gemäß der obigen Syntax erstellen. In diesem Codeblock finden wir den aktuellen Wochentag mit der Methodenew Date() undgetDay(), um eine Zahl zu drucken, die dem aktuellen Tag entspricht. 1 steht für Montag, bis7 steht für Sonntag. Zunächst richten wir unsere Variable ein.

const day = new Date().getDay();

Mitswitch senden wir jeden Tag der Woche eine Nachricht an die Konsole. Das Programm wird in der Reihenfolge von oben nach unten ausgeführt, um nach einer Übereinstimmung zu suchen. Sobald eine gefunden wurde, verhindert der Befehlbreak, dass der Blockswitch weiterhin Anweisungen auswertet.

week.js

// Set the current day of the week to a variable, with 1 being Monday and 7 being Sunday
const day = new Date().getDay();

switch (day) {
    case 1:
        console.log("Happy Monday!");
        break;
    case 2:
        console.log("It's Tuesday. You got this!");
        break;
    case 3:
        console.log("Hump day already!");
        break;
    case 4:
        console.log("Just one more day 'til the weekend!");
        break;
    case 5:
        console.log("Happy Friday!");
        break;
    case 6:
        console.log("Have a wonderful Saturday!");
        break;
    case 7:
        console.log("It's Sunday, time to relax!");
        break;
    default:
        console.log("Something went horribly wrong...");
}
Output'Just one more day 'til the weekend!'

Dieser Code wurde an einem Donnerstag getestet, was4 entspricht, daher betrug die KonsolenausgabeJust one more day 'til the weekend!. Abhängig davon, an welchem ​​Wochentag Sie den Code testen, ist Ihre Ausgabe unterschiedlich. Wir haben am Ende einendefault-Block eingefügt, der im Fehlerfall ausgeführt werden soll. Dies sollte in diesem Fall nicht der Fall sein, da es nur 7 Tage in der Woche gibt. Wir könnten zum Beispiel auch nur gedruckte Ergebnisse für Montag bis Freitag haben, und derdefault-Block hätte die gleiche Nachricht für das Wochenende haben können.

Wenn wir das Schlüsselwortbreakin jeder Anweisung weggelassen hätten, hätte keine der anderen Anweisungen voncaseals wahr ausgewertet, aber das Programm hätte weiter geprüft, bis es das Ende erreicht hätte. Um unsere Programme schneller und effizienter zu machen, schließen wir diebreak ein.

Bereiche wechseln

Es kann vorkommen, dass Sie einen Wertebereich in einemswitch-Block auswerten müssen, im Gegensatz zu einem einzelnen Wert wie in unserem obigen Beispiel. Wir können dies tun, indem wir unseren Ausdruck auftrue setzen und eine Operation innerhalb jedercase-Anweisung ausführen.

Zum besseren Verständnis verwenden wir ein bekanntes Beispiel. Im Tutorial vonconditional statementshaben wir eine einfache Bewertungs-App erstellt, die eine Zahlenbewertung mit den folgenden Anforderungen in eine Buchstabennote umwandelt.

  • Die Note 90 und höher ist einA

  • Die Note 80 bis 89 ist aB

  • Die Note 70 bis 79 ist aC

  • Die Note 60 bis 69 ist aD

  • Die Note 59 oder weniger beträgtF

Jetzt können wir das alsswitch-Anweisung schreiben. Da wir einen Bereich überprüfen, führen wir die Operation incase aus, um zu überprüfen, ob jeder Ausdrucktrue ergibt, und brechen dann aus der Anweisung aus, sobald die Anforderungen fürtrue erfüllt sind zufrieden.

grades.js

// Set the student's grade
const grade = 87;

switch (true) {
    // If score is 90 or greater
    case grade >= 90:
        console.log("A");
        break;
    // If score is 80 or greater
    case grade >= 80:
        console.log("B");
        break;
    // If score is 70 or greater
    case grade >= 70:
        console.log("C");
        break;
    // If score is 60 or greater
    case grade >= 60:
        console.log("D");
        break;
    // Anything 59 or below is failing
    default:
        console.log("F");
}
Output'B'

Der Ausdruck in Klammern, der ausgewertet werden soll, ist in diesem Beispieltrue. Dies bedeutet, dass allecase, die zutrue ausgewertet werden, übereinstimmen.

Genau wie beielse if wirdswitch von oben nach unten ausgewertet und die erste echte Übereinstimmung wird akzeptiert. Obwohl unsere Variablegrade87 ist und daher auch für C und D zutrue ausgewertet wird, ist die erste Übereinstimmung B, die die Ausgabe sein wird.

Mehrere Fälle

Möglicherweise stoßen Sie auf Code, in dem für jeden Codeblock mehrerecase+`s should have the same output. In order to accomplish this, you can use more than one `+case enthalten sind.

Um dies zu testen, werden wir eine kleine Anwendung erstellen, die den aktuellen Monat mit der entsprechenden Jahreszeit übereinstimmt. Zuerst verwenden wir die Methodenew Date(), um eine Zahl zu finden, die dem aktuellen Monat entspricht, und wenden diese auf die Variablemonth an.

const month = new Date().getMonth();

Die Methodenew Date().getMonth() gibt eine Zahl von0 bis11 aus, wobei0 Januar und11 Dezember ist. Zum Zeitpunkt dieser Veröffentlichung ist der Monat September, was8 entspricht.

Unsere Anwendung gibt der Einfachheit halber die vier Jahreszeiten mit den folgenden Spezifikationen aus:

  • Winter: Januar, Februar und März

  • Spring: April, Mai und Juni

  • Summer: Juli, August und September

  • Autumn: Oktober, November und Dezember

Unten ist unser Code.

seasons.js

// Get number corresponding to the current month, with 0 being January and 11 being December
const month = new Date().getMonth();

switch (month) {
    // January, February, March
    case 0:
    case 1:
    case 2:
        console.log("Winter");
        break;
    // April, May, June
    case 3:
    case 4:
    case 5:
        console.log("Spring");
        break;
    // July, August, September
    case 6:
    case 7:
    case 8:
        console.log("Summer");
        break;
    // October, November, December
    case 9:
    case 10:
    case 11:
        console.log("Autumn");
        break;
    default:
        console.log("Something went wrong.");
}

Wenn wir den Code ausführen, erhalten wir eine Ausgabe, die die aktuelle Saison auf der Grundlage der obigen Spezifikationen identifiziert.

OutputSummer

Der aktuelle Monat zum Zeitpunkt der Veröffentlichung war8, was einer der Aussagen voncasemit der Saisonleistung von"Summer"entsprach.

Fazit

In diesem Artikel haben wir die Anweisungswitch überprüft, eine Art vonconditonal statement, die einen Ausdruck auswertet und unterschiedliche Werte basierend auf übereinstimmenden Ergebnissen ausgibt. Wir haben die Aussagen vonswitchanhand eines Bereichs und mehrerer Aussagen voncaseüberprüft.

Um mehr überswitch zu erfahren, können Sie es aufMozilla Developer Network überprüfen.