次の違いは何ですか?
switch (expression) {
case:
somethings;
break;
}
そして
switch (expression) {
case: {
somethings;
break;
}
}
最初は、そのようなオブジェクトリテラルを返すことができると思っていましたが、構文エラーであることがわかりました。実際の違いは何ですか?
この方法で使用される中括弧は、独自のブロックスコープを確立します。このスコープでは、ローカルlet
変数またはconst
定数を定義できます。
switch (false) {
case true: {
let x = "bar";
console.log(x);
break;
}
case false: {
let x = "baz";
console.log(x);
break;
}
}
Ecmascript 2015では、同じ識別子を持つ複数のlet
/const
宣言は同じスコープ内では許可されないため、ネストされたブロックスコープなしでスローされます。
switch
ステートメントはブロックスコープ自体を作成することに注意してください。つまり、ネストされたブロックスコープを使用するかどうか、let
don '内のconst
/switch
宣言親スコープにリークします。
ただし、switch
のコンテキストでは、個々のcase
ブランチのブロックを視覚的に強調するために、中括弧も装飾的に使用されます。
中括弧を使用する必要があります。
const
/let
)を作成するとき同名const
/let
)