JavaScript には、値が存在しないことを示す複数の方法があります。このページでは、null
データ型と undefined
データ型という、最も一般的な 2 つの方法について説明します。
null
null
キーワードは、値が存在しないことが意図的に定義されていることを表します。null
はプリミティブですが、typeof
演算子は null
がオブジェクトであることを返します。これは、JavaScript の最初のバージョンから引き継がれたエラーで、ウェブ全体で想定される動作が損なわれないよう、意図的に対処しないでください。
typeof null
> object
スクリプトのある時点で割り当てられた値か、明示的に存在しない値のいずれかを反映することを前提として、変数を null
として定義できます。null
値を既存の参照に割り当てて、以前の値をクリアすることもできます。
undefined
undefined
は、宣言したばかりの変数、または意味のある値を返さない演算の結果の値に割り当てられるプリミティブ値です。たとえば、ブラウザのデベロッパー コンソールで関数を宣言したとします。
function myFunction() {}
> undefined
関数は、return
ステートメントが値を返さない場合、明示的に undefined
を返します。
(function() {
return;
}());
> undefined
null
と undefined
の比較
undefined
と null
は機能が一部重複していますが、目的は異なります。厳密に言えば、null
は意図的に「空白」として定義された値を表し、undefined
は値が割り当てられていないことを表します。
null
と undefined
はほぼ同じですが、厳密には同じではありません。緩い等価演算子は、異なる型のオペランドをブール値に強制変換し、null
と undefined
の両方を false
にします。厳密な等価演算子は、異なるデータ型のオペランドを等しくないと見なします。
null == undefined
> true
null === undefined
> false
予約済みキーワード null
とは異なり、undefined
はグローバル オブジェクトのプロパティです。これは JavaScript の開発の早い段階で行われた設計上の決定であり、従来のブラウザで undefined
が完全に上書きされるようにしました。最新のブラウザでは、引き続き非グローバル スコープの識別子として undefined
を使用し、その宣言のスコープ内でその値をオーバーライドできます。undefined
を識別子として使用しないでください。これにより、予期しない動作が発生する可能性があります。また、コードベースの将来の管理者を混乱させる可能性があります。
理解度をチェックする
typeof null
は何を返しますか。
object
undefined
primitive
string