JavaScript で、if 文の条件で偽として扱われる値はどれですか。
false、0、空文字、null、undefined、NaN などが偽として扱われます。空の配列やオブジェクトは真です。|| はこの判定を使うので、0 や空文字を「値が無い」とみなしてしまいます。
面接官が見ているのは補強。falsy な値を知っているか。
これは「const timeout = options.timeout || 3000 と書かれていて、timeout に 0 を指定したのに 3000 になりました。なぜですか。」への追撃質問です。
よくある答えと、面談でどう見られるか
- false、0、空文字、null、undefined、NaN など
その通りです。0 と空文字が含まれる点が、|| のバグの原因になります。 - false と null だけ
ほかにもあります。0、空文字、undefined、NaN も偽として扱われます。 - false、null、undefined だけ。0 は真
0 は偽として扱われます。だから timeout に 0 を渡すと置き換わります。 - 空の配列と空のオブジェクトも偽
空の配列 [] と空のオブジェクト {} は真として扱われます。
模範解答
false、0、空文字、null、undefined、NaN などが偽として扱われます(falsy な値)。それ以外は真です。空の配列 [] や空のオブジェクト {} も真になります。
|| はこの判定を使うので、0 や空文字を「値が無い」とみなしてしまいます。null と undefined だけを「値が無い」として扱いたいときは ?? を使います。
出典(一次資料)
対象: TypeScript 5.x〜7.0 照合した一次資料: 公式ドキュメント 照合: 2026-10-25 最終更新: 2026-10-25
お使いの版で挙動が違う場合があります。誤りに気づいたらこの解説を報告するから教えてください。