15.5Comparison Operators & Equality / Switch Blocks

`case`句でのレキシカル宣言

`case`句と`default`句でレキシカル宣言(`let`, `const`など)を含む場合は、波括弧でブロックを作成します

`switch`文全体で一つのブロックスコープが作られます。そのため、波括弧なしで複数の `case` 句で同じ変数名(例: `x`)を `let` や `const` で宣言しようとすると、識別子の重複エラーが発生します。各 `case` 句を波括弧で囲むことで、それぞれが独立したブロックスコープを持つようになり、この問題を回避できます。

❌ Bad
// bad
switch (foo) {
  case 1:
    let x = 1;
    break;
  case 2:
    const y = 2;
    break;
}
✅ Good
// good
switch (foo) {
  case 1: {
    let x = 1;
    break;
  }
  case 2: {
    const y = 2;
    break;
  }
}