こけこっこー

がんばる

jsのcaseには中括弧をつけるべき

React Reduxで開発してて、Reducerに以下のようなコードを書いてたら case Bhoge で怒られました。

switch (type) {
  case A:
    const { hoge } = state;
    return {
      ...state,
      hoge: hoge + 1,
    };
  case B:
    const { hoge } = state;
    return {
      ...state,
      hoge: hoge + 2,
    };
  default:
    return state;
}

エラーメッセージは以下のように言ってます。 Duplicate declaration "hoge" (null)

どうやら hoge が二重定義されてるっぽいです。 以下のように括弧をつければ解決。 caseを括弧で閉じてやらないとスコープが制限されないんですね。。。

switch (type) {
  case A: {
    const { hoge } = state;
    return {
      ...state,
      hoge: hoge + 1,
    };
  }
  case B: {
    const { hoge } = state;
    return {
      ...state,
      hoge: hoge + 2,
    };
  }
  default: {
    return state;
  }
}