ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScriptのundefinedとnullの理解を詳しく解説

JavaScriptのundefinedとnullの理解を詳しく解説

亚连
亚连オリジナル
2018-05-19 16:37:171881ブラウズ

ここで、JavaScript の型システム (unknown と null) について包括的に理解してもらいます。今からそれを皆さんと共有し、皆さんの参考にしてください。

前に述べたように

一般的なプログラミング言語はnullのみを表現しますが、JavaScriptの設計者であるブレンダン・アイヒは未定義を設計し、間違いなくプログラムの複雑さを増大させますが、これにはいくつかの理由があります。この記事では、JavaScript における未定義と null について詳しく紹介します

歴史的な理由: JavaScript が 1995 年に誕生したとき、当初は Java と同様に、「なし」を表す値として null のみが設定されていました。 C 言語の伝統によれば、null は自動的に 0 に変換されるように設計されています。しかし、JavaScript 設計者の Brendan Aich は、2 つの理由からこれでは十分ではないと感じています。まず、null は Java と同じようにオブジェクトとして扱われます。ただし、JavaScript の値はプリミティブ型とオブジェクト型の 2 つのカテゴリに分類され、「なし」を表す値はオブジェクトではない方がよいと考えています。第 2 に、JavaScript の初期バージョンにはエラー処理メカニズムが含まれておらず、データ型の不一致が発生すると、型が自動的に変換されるか、警告なしに失敗することがよくありました。 Brendan Eich は、null が自動的に 0 に変換されると、エラーを見つけるのが難しくなるだろうと考え、別の未定義を設計しました。 null は「なし」を表すオブジェクトであり、数値に変換すると 0 になります。未定義は「なし」を表すプリミティブ値で、数値に変換すると NaN になります。ただし、現在は null です。と undefine は基本的に同義であり、いくつかの微妙な違いがあるだけで、すべてプリミティブ型です

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

var test;//undefined
console.log(test == undefined);//true
var test = undefined;//undefined

まだ宣言されていない変数に対して実行できる操作は 1 つだけです

データ型を検出するには typeof 演算子を使用しますが、厳密モードではエラーが発生します。 error

typeof(test);//undefined

【シナリオ出現】

【1】未代入変数宣言

【2】オブジェクトの存在しないプロパティを取得 【3】戻り値のない関数の実行結果

【4】関数のパラメータは渡されません

【5】void(expression)

var i;
console.log(i);//undefined
var o = {};
console.log(o.p);//undefined
function f(){};
console.log(f());//undefined
function f(x){return x;}
console.log(f());//undefined
console.log(void(0));//undefined

【型変換】

Boolean(undefined):  false
Number(undefined):  NaN
String(undefined):  'undefined'

null Null型は値を1つだけ持ちます。ヌル。 null は JavaScript 言語のキーワードであり、特別な値を表し、「null 値」を説明するためによく使用されます

論理的な観点から見ると、null 値は null オブジェクト ポインターを表します【注意】null は null オブジェクト ポインターです。 、 [] は空の配列、{} は空のオブジェクト、この 3 つは異なります

console.log(typeof null);//'object'

null と unknown は異なりますが、どちらも「値の空き」を表し、null は「空の値」を表し、unknown は「未定義」を表します」。多くの場合、この 2 つは交換可能です。等価演算子 == は、この 2 つが等しいとみなします

console.log(null == undefined);//true

実際、未定義と null はコンストラクター型ではないため、これら 2 つの値のメンバーにアクセスするためのプロパティとメソッドはありません。メソッドは型エラーを生成します

[型変換]

Boolean(null):   false
Number(null):   0
String(null):    'null'

以上は、皆さんのためにまとめたもので、将来的に皆さんのお役に立てれば幸いです。

関連記事:

JavaScript 関数式 (グラフィック チュートリアル)

JavaScript の継承メカニズム (詳細な回答、グラフィック チュートリアル)

Javascript を使用したクラスとオブジェクトの作成 (グラフィック チュートリアル)

以上がJavaScriptのundefinedとnullの理解を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。