switch (txt) { case "hoge": let i = 0; break; case "fuga": let i = 1; break; case "piyo": let i = 2; break; }
こんな感じで書いたら、
Uncaught SyntaxError: Identifier 'i' has already been declared
とエラーになりました。
そう。なぜならブロックスコープはswitchの範囲で切られているからです。
(上記例であればswitch文を使うまでもないという意見も出そうですが、余計なものを省いてシンプルにしています)
switch (txt) { case "hoge": { let i = 0; break; } case "fuga": { let i = 1; break; } case "piyo": { let i = 2; break; } }
という感じでブロックスコープを設定したらエラーが消えました。
ちなみに、
{ let i = 0; console.log(i); } { let i = 1; console.log(i); }
という感じで、letのためだけにブロックスコープを切っても良いっちゃ良いみたいですね。
積極的に使う必要はないですが。