undefinedとnullの違い


JavaScript言語には「無」を表す二つの値があります.undefinedとnull.
var a = undefined;
var a = null;
a変数はそれぞれundefinedとnullとして与えられ、値の書き方は似ています.また、if文で判断するとfalseに戻ります.undefined==nullもtrueに戻ります.しかし、両者には違いがあります.undefinedはundefinedタイプで、nullはobjectタイプです.nullは「対象がない」という意味で、そこに値があるべきではない.典型的な使い方は:
  • は、関数のパラメータとして、オブジェクトではないことを表しています.
  • は対象プロトタイプチェーンの終点となります.
       Object.getPrototypeOf(Object.prototype)    // null
    
  • undefinedは「不足値」を表しています.ここに値があるべきですが、まだ定義されていません.典型的な使い方は:
  • 変数は宣言されましたが、割り当てがない場合はundefinedに等しいです.
    var i;
    i;    // undefined
  • 関数を起動するときに提供すべきパラメータが提供されていません.このパラメータはundefinedに等しいです.
    function f(x){
       console.log(x);
    }
    f();    // undefined
  • オブジェクトには、属性が割り当てられていません.この属性の値はundefinedです.var o=new Object();
    o.p;    // undefined 
    
  • 関数が戻り値がない場合、デフォルトはundefinedに戻ります.var x=f()
    x;    // undefined