switch はこんな構文でいいと思う
- カテゴリ:
- JavaScript
- コメント数:
- Comments: 0
◆ const のせいでスコープ作らないと使い物にならない
switch はこういう構文で書けばいいと思いました
「case ○:」 のあとに if 文みたいな {} を使います
これまでの JavaScript なら問題なかったのですが const / let をメインにするとこれまでの書き方だとすでに定義されていますってエラーになります
各ケースでスコープがわかれないので仕方ないです
だからといってこれに合わせて一部のケースでしか使わない変数を switch の前に書いておくのは気持ち悪いです
出来る限りスコープは小さくあってほしいですし const だと代入できません
そうなると 自然と case ごとに {} で囲むことになります
break は次の行に書くよりは 「}」 の後に書いて構文ぽくしたほうが書き忘れ減りそうなので 「} break」 と書くようにしました
「}」 のあとはちょっと変な気もしましたが 「} else {」 や 「} while(0)」 とかありますし 別にいいかなって
けっこうよさそうかなと思ったけど switch 自体あんまりつかってなかったです
もともとブロックスコープの言語の switch ってこの問題どう対処してるんだろう
const x = 2
switch(x){
case 1: {
const a = 100
console.log(a)
} break
case 2: {
const a = 101
console.log(a)
} break
}
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(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 ってこの問題どう対処してるんだろう