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 sich um einen Syntaxfehler handelt. Was ist eigentlich der Unterschied?
Beispiel aus einer anderen Frage: Wie übergebe ich eine Switch-Anweisung als Funktionsargument in Javascript ES6?
Auf diese Weise verwendete geschweifte Klammern legen einen eigenen Blockbereich fest, in dem Sie local definieren können let
Variablen bzw const
Konstanten:
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 verschachtelte Blockumfänge auslösen, da multiple let
/const
Deklarationen mit demselben Bezeichner sind in Ecmascript 2015 im selben Bereich nicht zulässig.
Bitte beachten Sie, dass die switch
-Anweisung selbst einen Blockbereich erstellt, dh ob Sie verschachtelte Blockbereiche verwenden oder nicht, let
/const
Erklärungen drin switch
Lecken Sie nicht in den übergeordneten Bereich.
Allerdings im Rahmen von switch
Geschweifte Klammern werden auch rein dekorativ verwendet, um die Blöcke des Einzelnen optisch hervorzuheben case
Geäst.
Du musst geschweifte Klammern verwenden:
- beim Erstellen mehr Variablen im Blockbereich (
const
/ let
) mit der selbe Name
- nach spez MDN-Webdokumentation
- FEHLER: Uncaught SyntaxError: Bezeichner ‘Variablenname’ wurde bereits deklariert
- beim Benutzen eslint in den Standardeinstellungen und mit sogar einzelne (
const
/ let
)
- nach Vorschrift No-Case-Erklärungen
- FEHLER: Unerwartete lexikalische Deklaration in Fallblock No-Case-Deklarationen
Die Syntax auf beiden ist ungültig. Fall sollte etwas angeben, auf das abgeglichen werden soll, und die Rückgabe erfordert die
return
Stichwort.– Kammerherr
27. Februar 2017 um 8:38 Uhr
Warum haben Sie in Ihrem Beispiel break-Anweisungen in Arrays? Geben Sie bitte ein minimales, vollständiges und überprüfbares Beispiel.
– Kammerherr
27. Februar 2017 um 17:12 Uhr
Beispiel bereitgestellt. Break-Anweisungen waren wie in MDN als optional gedacht
– Aurimas
27. Februar 2017 um 21:54 Uhr
Können Sie eine Ablehnung erklären?
– Aurimas
28. Februar 2017 um 15:49 Uhr
Jemand sollte in der Lage sein, f12 zu drücken und Ihr Beispiel in die Chrome-Konsole zu kopieren und einzufügen. Versuch es.
– Kammerherr
28. Februar 2017 um 17:49 Uhr