ホームページ ウェブフロントエンド jsチュートリアル JS_javascript スキルに基づいた unfineed と null の違いの分析

JS_javascript スキルに基づいた unfineed と null の違いの分析

May 16, 2016 pm 06:03 PM
null undefined

そこで、よく考えた結果、この記事を書き、皆さんにご協力をお願いしました。
誰もが知っているように:
null == 未定義
しかし:
null !== 未定義
では、この 2 つの違いは何でしょうか?
null
これはオブジェクトですが、空です。これはオブジェクトであるため、 typeof null は 'object' を返します。
null は JavaScript の予約キーワードです。
null が数値演算に関与する場合、その値は自動的に 0 に変換されます。 したがって、次の式は計算後に正しい値を取得します:
式: 123 null 結果値: 123
式: 123 * null 結果値: 0
未定義
未定義はグローバル オブジェクト (ウィンドウ) の特別なプロパティであり、その値は未定義です。ただし、 typeof unknown は 'unknown' を返します。
未定義には特別な意味がありますが、実際にはプロパティであり、グローバル オブジェクト (ウィンドウ) のプロパティです。以下のコードを見てください:

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

alert( 'unknown' in window); //出力: true
var anObj = {};
alert('unknown' in anObj); //出力: false

見られる、未定義は window オブジェクトのプロパティですが、anObj オブジェクトのプロパティではありません。
注: 未定義は特別な意味を持つ属性ですが、JavaScript では予約されたキーワードではありません。
未定義が数値計算に参加する場合、結果は NaN でなければなりません。
ところで、NaN はグローバル オブジェクト (ウィンドウ) のもう 1 つの特別なプロパティであり、Infinity も同様です。これらの特別な属性はいずれも JavaScript の予約キーワードではありません。
未定義のパフォーマンスの向上
プログラム内で未定義の値を使用する場合、実際にはウィンドウ オブジェクトの未定義プロパティを使用します。
同様に、変数を定義しても初期値を割り当てない場合、たとえば次のようになります。

var aValue;
このとき、JavaScript はその初期値をウィンドウに設定します。プリコンパイルと呼ばれる。未定義属性参照、
したがって、変数または値を未定義と比較する場合、実際にはウィンドウ オブジェクトの未定義属性と比較されます。この比較プロセス中に、JavaScript はウィンドウ オブジェクトの「unknown」という名前のプロパティを検索し、2 つのオペランドの参照ポインタが同じかどうかを比較します。
windowオブジェクトは多くの属性値を持っているため、undefinedとの比較のたびにwindowオブジェクトの未定義属性を探すのに時間がかかります。これは、未定義との頻繁な比較を必要とする関数のパフォーマンス上の問題となる可能性があります。したがって、この場合、ローカルの未定義変数を自分で定義して、未定義の比較を高速化できます。例:
コードをコピー コードは次のとおりです。

function anyFunc()
{
var unknown; //カスタマイズされたローカルの未定義変数
if(x == unknown) //スコープでの参照の比較
while(y != unknown) //スコープでの参照の比較
} ;

ここで、未定義のローカル変数を定義する場合、その初期値は window.unknown プロパティ値への参照になります。新しく定義されたローカル未定義変数が関数のスコープ内に存在します。後続の比較操作では、JavaScript コードの記述方法に変更はありませんが、比較速度は非常に高速です。スコープ内の変数の数はウィンドウ オブジェクトのプロパティよりもはるかに少ないため、変数の検索速度が大幅に向上します。
これが、多くのフロントエンド JS フレームワークがローカルの未定義変数を独自に定義することが多い理由です。
この記事があなたのお役に立てれば幸いです。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

TypeError: Vue で未定義のプロパティ '$XXX' を読み取れません。どのように対処すればよいですか? TypeError: Vue で未定義のプロパティ '$XXX' を読み取れません。どのように対処すればよいですか? Nov 25, 2023 pm 12:14 PM

TypeError: Vue で未定義のプロパティ '$XXX' を読み取れません。どのように対処すればよいですか?

PHP への解決策 注意: 未定義のプロパティ: PHP への解決策 注意: 未定義のプロパティ: Jun 22, 2023 pm 02:48 PM

PHP への解決策 注意: 未定義のプロパティ:

未定義と null は何を意味しますか? 未定義と null は何を意味しますか? Nov 20, 2023 pm 02:39 PM

未定義と null は何を意味しますか?

未定義とは何ですか 未定義とは何ですか Jul 31, 2023 pm 02:28 PM

未定義とは何ですか

C言語のnullとNULLの違いは何ですか C言語のnullとNULLの違いは何ですか Sep 22, 2023 am 11:48 AM

C言語のnullとNULLの違いは何ですか

golangの「unknown: path.Join」エラーを解決するにはどうすればよいですか? golangの「unknown: path.Join」エラーを解決するにはどうすればよいですか? Jun 24, 2023 pm 01:12 PM

golangの「unknown: path.Join」エラーを解決するにはどうすればよいですか?

nullと未定義の違いは何ですか nullと未定義の違いは何ですか Nov 08, 2023 pm 04:43 PM

nullと未定義の違いは何ですか

null と unknown を使用する場合 null と unknown を使用する場合 Nov 13, 2023 pm 02:11 PM

null と unknown を使用する場合

See all articles