null と未定義

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

nullundefined の比較

undefinednull は機能が一部重複していますが、目的は異なります。厳密に言えば、null は意図的に「空白」として定義された値を表し、undefined は値が割り当てられていないことを表します。

nullundefinedほぼ同じですが、厳密には同じではありません。緩い等価演算子は、異なる型のオペランドをブール値に強制変換し、nullundefined の両方を false にします。厳密な等価演算子は、異なるデータ型のオペランドを等しくないと見なします。

null == undefined
> true

null === undefined
> false

予約済みキーワード null とは異なり、undefinedグローバル オブジェクトのプロパティです。これは JavaScript の開発の早い段階で行われた設計上の決定であり、従来のブラウザで undefined が完全に上書きされるようにしました。最新のブラウザでは、引き続き非グローバル スコープの識別子として undefined を使用し、その宣言のスコープ内でその値をオーバーライドできます。undefined を識別子として使用しないでください。これにより、予期しない動作が発生する可能性があります。また、コードベースの将来の管理者を混乱させる可能性があります。

理解度をチェックする

typeof null は何を返しますか。

object
undefined
primitive
string