こんにちは!
今回は「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
以上、お疲れさまでした〜🍵