原文: Falsy Values in JavaScript
解説
偽値とは、例えば変数を確認する際に、FALSE と評価されるもののことです。JavaScript には主に以下の 6 つの偽値があります: undefined
、null
、NaN
、0
、""
(空の文字列)、そしてもちろん、false
です。
変数の値が偽値であるか確認する
次のような単純な条件文で、変数の値が偽値であるか確認できます:
if (!variable) {
// When the variable has a falsy value the condition is true.
}
一般的な例
var string = ""; // <-- 偽値
var filledString = "some string in here"; // <-- 真値 (truthy)
var zero = 0; // <-- 偽値
var numberGreaterThanZero // <-- (ゼロよりも大きな数値は) 真値
var emptyArray = []; // <-- 真値, これについてはこのあと詳しく説明します
var emptyObject = {}; // <-- 真値
配列の興味深い挙動
if ([] == false) // <-- 真値, if ブロック内のコードは実行されます
if ([]) // <-- 真値, こちらも if ブロック内のコードは実行されます
if ([] == true) // <-- 偽値, if ブロック内のコードは実行されません
if (![]) // <-- 偽値, こちらも if ブロック内のコードは実行されません
注意事項
値をブーリアンコンテキストで評価する際は、データ型を意識してください。
値のデータ型として数値を期待している場合、真値/偽値の評価は予期しない結果をもたらすことがあります:
const match = { teamA: 0, teamB: 1 }
if (match.teamA)
// 偽値と評価されるため、以下のコードは実行されません
console.log('Team A: ' + match.teamA);
}
上記のユースケースでは、代わりに typeof
を用いて、評価する値のデータ型が number であるかどうかを次のように評価します:
const match = { teamA: 0, teamB: 1 }
if (typeof match.teamA === 'number')
console.log('Team A: ' + match.teamA);
}