JS基礎のundefinedとnullの違い分析

1978 ワード

そこで、よく考えた後に、本文を書いて、各位の侠客にれんがをたたいてもらいます.
総周知:
null==undefined
しかし、
null!==undefined
この二つの違いは何ですか?
null
これは対象ですが、空いています.対象ですので、typeof nullは'object'に戻ります.
nullはJavaScriptの保留キーワードです.
nullが数値演算に参加すると、その値は自動的に0に変換されますので、下記の式の計算で正しい値が得られます.
表式:123+null結果値:123
式:123*null結果値:0
undefined
undefinedはグローバルオブジェクト(window)の特殊属性で、その値は未定義です.ただし、typeof undefinedは'undefined'を返します.
undefinedは特殊な意味を持っていますが、確かに属性であり、全体のオブジェクト(window)の属性です.下のコードを見てください.
 
  
alert('undefined' in window); // :true
var anObj = {};
alert('undefined' in anObj); // :false
ここから、undefinedはwindowオブジェクトの属性の一つですが、anObjオブジェクトの属性ではありません.
注意:undefinedは特殊な意味を持つ属性ですが、JavaScriptの保留キーワードではありません.
undefinedが任意の数値計算に参加する場合、その結果はNaNに違いない.
ちなみに、NaNはグローバルオブジェクトのもう一つの特殊属性で、Infinityもです.これらの特殊属性はすべてJavaScriptの保留キーワードではありません.
undefined性能の向上
プログラムでundefined値を使うと、実際にはwindowオブジェクトのundefined属性が使われます.
同様に、変数が定義されていますが、初期値は与えられていません.例えば、
var a Value
このとき、JavaScriptは、いわゆるプリコンパイル時に、その初期値をwindow.undefined属性への参照として設定します.
したがって、変数または値をundefinedと比較すると、実際にはwindowオブジェクトのundefined属性と比較される.この比較の過程で、JavaScriptはwindowオブジェクトの名前を「undefined」という属性を検索して、二つの操作数の参照ポインタが同じかどうかを比較します.
windowオブジェクトの属性値が非常に多いため、undefinedとの比較では、windowオブジェクトのundefined属性の検索に時間がかかります.undefinedと頻繁に比較する必要がある関数では、これは性能問題点になり得る.したがって、この場合、undefinedに対する比較速度を速めるために、局所的undefined変数を自己定義することができる.たとえば:
 
  
function anyFunc()
{
var undefined; // undefined
if(x == undefined) //
while(y != undefined) //
};
ここで、undefined局所変数を定義すると、その初期値はwindow.undefined属性値の参照となります.新たに定義された局所undefined変数は、この関数の作用領域に存在する.その後の比較操作では、JavaScriptコードの書き方は何も変わりませんが、比較的速いです.作用領域の変数数はwindowオブジェクトの属性よりはるかに少ないため、検索変数の速度は非常に高くなります.
これは多くの先端のJSフレームワークがなぜ自分で一つのローカルundefined変数を定義する必要があるのですか?
この文章の紹介を通して、あなたに助けを与えたいです.