JavaScriptでnull・undefined・空文字を判定する標準関数は存在する?truthyとfalsyの仕組みを解説
結論:標準関数は存在しない
JavaScriptには、null・undefined・空文字(ブランク値)などを一括でチェックするための標準関数は用意されていません。
その代わり、JavaScriptには「truthy(真とみなされる値)」と「falsy(偽とみなされる値)」という重要な概念があります。この仕組みを理解すれば、条件分岐による柔軟な値の判定が可能になります。
truthyとfalsyとは何か
if文などの条件式の中でtrueに変換(型強制)される値をtruthy、falseに変換される値をfalsyと呼びます。JavaScriptでは、ブール値以外の値も条件文の中で自動的にtrueかfalseのどちらかに評価されます。
ES仕様で定義されているfalsyな値
ECMAScriptの仕様によると、以下の6つの値は条件コンテキスト内でfalseと評価されます。
- null
- undefined
- NaN
- 空文字列("")
- 0
- false
falsyな値を使った具体例
つまり、次のいずれのif文も実行されません。すべての条件式がfalseと評価されるためです。
if (null)
if (undefined)
if (NaN)
if ("")
if (0)
if (false)この性質を利用すれば、例えば if (!value) のように書くだけで、変数がnull・undefined・空文字・0などの場合にまとめて処理を分岐できます。逆に、上記以外の値(オブジェクト、配列、非ゼロの数値、空でない文字列など)はすべてtruthyとして扱われます。
より厳密にnullとundefinedだけを判別したい場合は、等価演算子 == null を使う方法や、Optional Chaining(?.)やNull合体演算子(??)といったモダンな構文を活用するのも有効です。
-
JavaScriptのSymbol.for()関数とは?グローバルシンボルレジストリの仕組みと使い方
Symbol.for()関数は、ランタイム全体で共有されるグローバルシンボルレジストリから、指定されたキーに対応するシンボルを検索するための関数です。 検索の結果、該当するシンボルがすでに登録されていればそれを返し、存在しない場合は新しいシンボルをレジストリに登録したうえで返します。この仕組みにより、異なるスコープやモジュール間でも同じキーを持つシンボルを共有できるようになります。 Symbol.for()とSymbol()の違い 通常のSymbol()呼び出しは、同じ引数を渡しても毎回まったく別の新しいシンボルを生成します。一方、Symbol.for(key)は同じキーを渡せば必ず同じシンボ
-
JavaScriptでfalsy値(偽と評価される値)を見分ける方法
JavaScriptにおけるfalsy値とはJavaScriptでは、値をBoolean型として評価したときに「false」とみなされる値がいくつか存在します。これらは「falsy値(偽の値)」と呼ばれます。条件分岐や論理演算において、意図しない動作を防ぐために、どの値がfalseと評価されるかを正しく理解しておくことが重要です。JavaScriptでfalseと評価される主な値は以下の通りです。false — Boolean型のfalseそのもの0 — 数値のゼロ空文字列:、、または ``(テンプレートリテラル)null — 値が存在しないことを示す特殊な値undefined — 値が未定義