原文: Falsy Values in JavaScript
翻訳・翻案: Manabu Matsumoto

解説

偽値とは、例えば変数を確認する際に、FALSE と評価されるもののことです。JavaScript には主に以下の 6 つの偽値があります: undefinednullNaN0"" (空の文字列)、そしてもちろん、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);
}

関連情報