Was ist der Unterschied zwischen:
switch (expression) {
case:
somethings;
break;
}
und
switch (expression) {
case: {
somethings;
break;
}
}
Zuerst dachte ich, dass ich ein Objektliteral so zurückgeben könnte, aber es stellt sich heraus, dass es ein Syntaxfehler ist. Was ist eigentlich der Unterschied?
Beispiel aus einer anderen Frage: Wie übergeben Sie die switch-Anweisung als Funktionsargument in Javascript ES6?
Auf diese Weise verwendete geschweifte Klammern bilden einen eigenen Blockbereich, in dem Sie lokale Variablen let
oder const
definieren können:
switch (false) {
case true: {
let x = "bar";
console.log(x);
break;
}
case false: {
let x = "baz";
console.log(x);
break;
}
}
Das Beispiel würde ohne geschachtelte Blockbereiche werfen, da mehrere let
/const
-Deklarationen mit demselben Bezeichner in Ecmascript 2015 nicht innerhalb desselben Bereichs zulässig sind.
Bitte beachten Sie, dass die switch
-Anweisung selbst einen Blockbereich erstellt, d. H. Ob Sie verschachtelte Blockbereiche verwenden oder nicht. let
/const
-Deklarationen in switch
gehen nicht in den übergeordneten Bereich über.
Im Zusammenhang mit switch
werden geschweifte Klammern jedoch auch rein dekorativ verwendet, um die Blöcke der einzelnen case
-Äste optisch hervorzuheben.
sie müssen geschweifte Klammern verwenden:
const
let
) mit _/demselben Namenconst
/let
)