◆ const のせいでスコープ作らないと使い物にならない 

switch はこういう構文で書けばいいと思いました
const x = 2
switch(x){
    case 1: {
        const a = 100
        console.log(a)
    } break
    case 2: {
        const a = 101
        console.log(a)
    } break
}

「case ○:」 のあとに if 文みたいな {} を使います

これまでの JavaScript なら問題なかったのですが const / let をメインにするとこれまでの書き方だとすでに定義されていますってエラーになります
const x = 2
switch(x){
    case 1:
        const a = 100
        console.log(a)
        break
    case 2:
        const a = 101 // すでに定義されてるエラー
        console.log(a)
     break
}

各ケースでスコープがわかれないので仕方ないです

だからといってこれに合わせて一部のケースでしか使わない変数を switch の前に書いておくのは気持ち悪いです
出来る限りスコープは小さくあってほしいですし const だと代入できません


そうなると 自然と case ごとに {} で囲むことになります
break は次の行に書くよりは 「}」 の後に書いて構文ぽくしたほうが書き忘れ減りそうなので 「} break」 と書くようにしました

「}」 のあとはちょっと変な気もしましたが 「} else {」 や 「} while(0)」 とかありますし 別にいいかなって


けっこうよさそうかなと思ったけど switch 自体あんまりつかってなかったです

もともとブロックスコープの言語の switch ってこの問題どう対処してるんだろう