IT-Q

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
お使いの版で挙動が違う場合があります。誤りに気づいたらこの解説を報告するから教えてください。