JavaScript

[JS]switch文のcaseはブロックで記述してみよう!

switchのcase内でconstを使ったら…

何気なくswitch文を書いていたら、こんな記述をした時に怒られてしまいました。

const hoge = 'hoge'

switch (hoge) {
  case 'hoge':
    const fuga = 'fuga'
    break
  default:
    const fuga = 'fuga'
}

constがブロック内に2つある、つまり、fuga はすでに定義されていますよ、ということだ。
確かに、同じブロック内で定義されているもんね。

ブロックにしてあげる

解決方法は、case文を囲ってあげるとエラーが解消される。

const hoge = 'hoge'

switch (hoge) {
  case 'hoge': {
    const fuga = 'fuga'
    break
  }
  default: {
    const fuga = 'fuga'
  }
}

当たり前っちゃあ当たり前なのだが、スコープのことを考えるならば確かにこうあるべきだ。
ちなみに、ESLintでもno-case-declarationsとしてルール化されているようだ。


こちらの使用方法についてコメントいただいたので補足します!

今回何故このようにcase文内でconstを宣言したいと思ったかというと、case毎に処理を分岐させたかったためです。
結局caseの中身もfunction化してしまったためこの記法は使用しませんでしたが、ESLintでも紹介されている方法だったので紹介させていただきました!

エンジニアにおすすめ転職サイト

マイナビIT AGENT
迷ったらまずはココ。求人数が多いため希望や条件にマッチする求人が見つかる!

レバテックキャリア
担当者のレベルが高い。エンジニア特化で15年の実績がある実績で初回提案での内定率驚異の90%!

JOIN
副業やフリーランスとして高額報酬案件を見つけるならJOIN。未経験者でも案件獲得実績豊富が強み!

\面白いと思ったら/

記事のシェア & Twitter のフォロー をお願いします!

@proglearn
一緒によく読まれている記事

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です