ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript_javascript スキルにおける Null と Unknown の違いの分析

JavaScript_javascript スキルにおける Null と Unknown の違いの分析

WBOY
WBOYオリジナル
2016-05-16 15:52:111210ブラウズ

JavaScript には、Null と Unknown の 2 つのプリミティブ型があります。これら 2 つのタイプは、JavaScript 開発者をしばしば混乱させます。いつが Null で、いつが Unknown なのでしょうか?

未定義型には、未定義の値が 1 つだけあります。宣言された変数が初期化されていない場合、変数のデフォルト値は未定義です。

Null 型にも、null という値が 1 つだけあります。 Null は、まだ存在しないオブジェクトを表すために使用され、関数が存在しないオブジェクトを返そうとすることを示すためによく使用されます。

コードをコピーします コードは次のとおりです:

変数値
alert(oValue == 未定義); //「true」を出力

このコードは true として表示されます。これは、oVlaue の値が初期化されていないため未定義であることを意味します。

コードをコピーします コードは次のとおりです:

alert(null == document.getElementById('notExistElement'));
ID が「notExistElement」の DOM ノードがページ上に存在しない場合、存在しないオブジェクトを取得しようとしているため、このコードは「true」を表示します。

コードをコピーします コードは次のとおりです:
alert(typeof unknown); //「未定義」を出力します
alert(typeof null); //「オブジェクト」を出力します

コードの最初の行は理解しやすいですが、未定義の型は Unknown ですが、コードの 2 行目は人々を混乱させます。なぜまた null の型が Object なのでしょうか?実際、これは JavaScript の初期実装における間違いであり、後に ECMAScript に採用されました。これで、null が存在しないオブジェクトのプレースホルダーであることは説明できましたが、実際にコーディングする際には、この機能に注意を払う必要があります。


コードをコピー コードは次のとおりです:
alert(null == 未定義); //「true」を出力

ECMAScript は、unknown が null から派生したものと見なすため、それらを等しいものとして定義します。しかし、場合によってはこれら 2 つの値を区別しなければならない場合、どうすればよいでしょうか?以下の2つの方法が考えられます。

コードをコピー コードは次のとおりです:
alert(null === 未定義); //「false」を出力
alert(typeof null == typeof unknown) //出力 "false"

typeofメソッドの使用については前述しましたが、nullとunknownの型が異なるため、「false」が出力されます。そして、=== は絶対的な等価性を表し、ここで null === unknown は false を出力します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。