ホームページ > 記事 > ウェブフロントエンド > 未定義と null の違いを詳しく説明する
この記事では、未定義と null の違いについて説明します。未定義と null の違いがわからない場合、または未定義と null の違いに興味がある場合は、この記事を見てみましょう。そして本題に入ります
ほとんどのコンピューター言語には、C 言語の NULL、Java 言語の null、Python 言語の None、Ruby 言語の nil など、「なし」を表す値が 1 つだけあります。
少し奇妙なことに、JavaScript 言語には、実際には「なし」を表す 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 つの動作がいかに似ているかを示しています。 未定義と null の意味と使い方は似ているのに、なぜこのような値を 2 つ同時に設定する必要があるのでしょうか?これは理由もなく JavaScript の複雑さを増し、初心者を悩ませませんか? Google が開発した JavaScript 言語の代替である Dart 言語では、null のみが存在し、未定義は存在しないと明確に規定されています。
2. 歴史的な理由
Number(null) // 0 5 + null // 5しかし、JavaScript の設計者であるブレンダン・アイヒ氏は、2 つの理由から、これでは十分ではないと感じています。 まず、nullはJavaと同じようにオブジェクトとして扱われます。ただし、JavaScript の
データ型は、プリミティブ型 (プリミティブ) と複合型 (コンプレックス) の 2 つのカテゴリに分類されます。Brendan Aich は、「なし」を表す値はオブジェクトではない方がよいと考えています。
第 2 に、JavaScript の初期バージョンには それで、ブレンダン・アイヒは別の未定義のものをデザインしました。3. 初期設計
Number(undefined) // NaN 5 + undefined // NaN
4. 現在の使用法
関数のパラメーター として、関数のパラメーターがオブジェクトではないことを示します。
(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 について_02_未定義および null_JavaScript スキルを理解する
以上が未定義と null の違いを詳しく説明するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。