JavaScriptのオブジェクトのキーの存在有無によってバグが発生するコード

コード

以下のようなコードでどのようなバグが発生するでしょうか。

const hoge = data => {
    if (data.category.code === 100) {
        return 'category code is 100'
    }
    return 'other'
}

シンプルなコードですが以下のようなバグが潜んでいます。

  • data がオブジェクトでない場合にエラーになる(“data"という文字列だった場合 etc)
  • data がオブジェクトだが、categoryがない場合({ item: 100} etc)

解決方法

以下のように条件文でチェックします。

const hoge = data => {
    if (data.category && data.category.code === 100) {
        return 'category code is 100'
    }
    return 'other'
}