タイトルを見ると、この 2 つの意味が使用されていることは誰もが知っています。また、ほとんどのコンピューター言語では、「なし」を意味する値は 1 つだけであることも知っています。たとえば、C 言語 では NULL、null です。 Java 言語では None、Python 言語では None、Ruby 言語では nil です。少し奇妙なことに、JavaScript 言語には実際には「none」を表す 2 つの値があります: unknown と null。何故ですか?今回は両者の違いについてご紹介していきます!
1. 類似点
JavaScriptでは、変数にunknownとnullを代入するのは、正直言ってほとんど違いがありません。
var a = undefined; var a = null;
上記のコードでは、変数にそれぞれ unfine と null を代入していますが、この 2 つの書き方はほぼ同等です。
未定義と null は if ステートメントで自動的に false に変換され、等価演算子 はそれらが等しいことを直接報告します。
if (!undefined) console.log('undefined is false'); // undefined is false if (!null) console.log('null is false'); // null is false undefined == null // true
2. 歴史的な理由
これは JavaScript の歴史に関連していることが判明しました。 1995年にJavaScriptが誕生したとき、当初はJavaと同様に「何もない」を表す値としてnullのみが設定されていました。 C言語の伝統に従って、nullは自動的に0に変換されるように設計されています。
Number(null)// 0 5 + null// 5
データ型は、プリミティブ型 (プリミティブ) と複合型 (コンプレックス) の 2 つのカテゴリに分類されます。Brendan Aich は、「なし」を表す値はオブジェクトではない方がよいと考えています。
第 2 に、JavaScript の初期バージョンには それで、ブレンダン・アイヒは別の未定義のものをデザインしました。3. 初期設計
JavaScript の初期バージョンは次のように区別されます。null は「なし」を表すオブジェクトであり、数値に変換すると 0 になります。 「なし」を表します。元の値。数値に変換すると NaN になります。
Number(undefined)// NaN 5 + undefined// NaN
4. 現在の使用法
しかし、上記の区別は実際には不可能であることがすぐに判明しました。現在、null と unknown は基本的に同義ですが、いくつかの微妙な違いがあります。 null は「オブジェクトがない」ことを意味します。つまり、そこに値があってはなりません。一般的な使用法は次のとおりです: (1)
関数のパラメーター として、関数のパラメーターがオブジェクトではないことを示します。
(2) は、オブジェクト プロトタイプ チェーンのエンドポイントとして機能します。Object.getPrototypeOf(Object.prototype)// null
未定義は、「値が欠落している」ことを意味します。つまり、ここには値があるはずですが、まだ定義されていません。一般的な使用法は次のとおりです: (1) 変数が宣言されていても値が割り当てられていない場合、その変数は未定義と等しくなります。 (2) 関数呼び出し時に、提供されるべきパラメータが提供されず、パラメータが未定義に等しい。 (3) オブジェクトには属性が割り当てられておらず、この属性の値は未定義です。 (4) 関数が値を返さない場合は、デフォルトで未定義を返します。
var i; i // undefined function f(x){console.log(x)} f() // undefined var o = new Object(); o.p // undefined var x = f(); x // undefined
概要:
この記事では、JavaScript における未定義と null の違いを複数のメソッドから紹介します。これについては人それぞれの理解と理解があると思います。関連する推奨事項:
Null と未定義を探索するJavaScriptでは未定義未定義の深淵
以上がJavaScriptのunfineとnullの違いを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。