プログラミング フロントエンド

【Javascript】if文でオブジェクトの存在チェックにおける注意点

スポンサーリンク

こんにちは!

今回は「Javascriptにおける、if文でオブジェクトの存在チェックにおける注意点」についてお伝えしたいと思います。

意外と盲点で気づかなかったということも多かったので、記事にさせていただきました。

(おさらい) if (num) はnum=0のときfalseに判定される

わざわざおさらいする程でもないと思いますが、一応書きますね

// 数値0はfalse判定
if (0) {
  console.log(true);
} else {
  console.log(false);
} // false

// 文字列'0'はtrue判定
if ('0') {
  console.log(true);
} else {
  console.log(false);
} // true

このように条件式の中身が0の場合にfalseとして判定されます。

objectでプロパティの存在チェックしたいときは書き方に注意

ifの数値判定に注意する必要があります。

例えば以下の場合

const obj = {num: 0};
// obj.numが存在チェックでtrueの場合に後続処理を行いたい
if (obj.num) {
// 計算処理など
} else {
console.log('error');
} // error

このようにプロパティの存在チェックするときにobj.num=0の場合にのみ、意図せずfalseに判定されてしまいます。

実装時に気づかないことがあるので、注意してください

正しく機能するには以下のように書けば問題ないはずです。

const obj = {num: 0};
// obj.numが存在チェックでtrueの場合に後続処理を行いたい
if (obj.num != undefined) {
console.log(true);
// 計算処理など
} else {
console.log('error');
} // true

以上、お疲れさまでした〜🍵

 

スポンサーリンク

-プログラミング, フロントエンド
-

© 2021 エンジニア×ライフハック Powered by AFFINGER5