falsy / truthy とは何か
JavaScript では、条件式に値を置くと自動的に「真偽値」に変換されます。このとき false とみなされる値 を falsy、true とみなされる値 を truthy と呼びます。
つまり、値そのものが true や false でなくても、条件式の中では「真っぽい」「偽っぽい」として扱われるのです。
falsy の代表例
falsy は数が限られていて、次のものが代表的です。
false0と-00n(BigInt のゼロ)""(空文字列)nullundefinedNaN(数値ではない)
これらはすべて条件式で「偽」と判定されます。
if (0) {
console.log("実行されない");
}
if ("") {
console.log("実行されない");
}
if (undefined) {
console.log("実行されない");
}
JavaScripttruthy の代表例
falsy 以外の値はすべて truthy です。例えば:
- 非ゼロの数値
- 非空文字列
- 配列(空配列も含む)
- オブジェクト(空オブジェクトも含む)
- 関数
これらは条件式で「真」と判定されます。
if (123) {
console.log("実行される");
}
if ("hello") {
console.log("実行される");
}
if ([]) {
console.log("空配列でも実行される");
}
if ({}) {
console.log("空オブジェクトでも実行される");
}
JavaScript例題で理解する
例題1:入力チェック
function greet(name) {
if (!name) {
console.log("名前を入力してください");
} else {
console.log(`こんにちは、${name}さん`);
}
}
greet(""); // 名前を入力してください(空文字は falsy)
greet("Taro"); // こんにちは、Taroさん
JavaScript例題2:デフォルト値の設定
const input = "";
const displayName = input || "ゲスト";
console.log(displayName); // "ゲスト"(空文字は falsy → OR の右側が使われる)
JavaScript例題3:配列の判定
const arr = [];
if (arr) {
console.log("truthy なので実行される");
}
if (arr.length === 0) {
console.log("要素がないことを確認できる");
}
JavaScript注意すべきポイント
"false"という文字列は 非空文字列なので truthy。見た目に惑わされないようにしましょう。- 空配列
[]や空オブジェクト{}は truthy。中身の有無を判定したいならlengthやObject.keys()を使います。 - 0 や空文字を「有効な値」として扱いたい場面では、OR(
||)でデフォルト値を設定すると意図が壊れることがあります。その場合は null 合体演算子(??)を使うと安全です。
const count = 0;
console.log(count || 10); // 10(0 は falsy → 意図外)
console.log(count ?? 10); // 0(null/undefined のみ置き換え → 意図通り)
JavaScriptまとめ
- falsy は限られた値(false, 0, “”, null, undefined, NaN など)。
- それ以外はすべて truthy。空配列や空オブジェクトも truthy。
- 条件式では自動的に真偽値に変換されるため、入力チェックやデフォルト値設定に活用できる。
- ただし、0 や空文字を有効値としたい場合は OR よりも
??を使うなど、意図に合わせた書き方が必要。
初心者は「falsy の代表例を覚える」「それ以外は truthy」と理解しておくと、条件式の挙動をスムーズに把握できます。
