たるだめ

のんびりとなんか書きます

【JavaScript】空のオブジェクト{}の判定

JSで{}の判定に困ったときの対処

NG

空のオブジェクトは、条件式で false になりません。

const object = {}
if (!object) {
  return
}

// trueになって処理が継続される

解決

一例。

// 空でない場合プロパティの数が長さになるのでそれを判定する方法
const object = {}
if (Object.keys(object).length === 0) {
  return
}

// 想定されるプロパティが存在しなかったら{}と同様の扱いとして判断してしまう方法
const object = {}
if (!object.id) {
  return
}

{}であるか判断したいだけなので、数値や他の型の値が来ることは想定していません。

null、undefined もTypeError: Cannot convert undefined or null to objectというエラーになります。

設計によると思いますが、個人的に null、undefined に関してはこの判定をする前に弾いてしまいます。

他の型の値が渡される場合は、それ用に別の判定が必要です。

参考

Object.keys()