null 和undefined的区别

* null

空的对象引用。

1995年Javascript诞生之初,像Java一样,只设置了null表示“什么度没有”,因此和Java一样

  (1)null被当成一个对象;

  (2)null可以自动转化为0;

   typeof null; //返回值为object

   Number(null); //返回值为0

 

*undefined

后来JS的设计者Brendan Eich认为“无”的值最好不是对象,且由于null自动转化为0,因此造成错误不易被发现。

因此,Brendan Eich又设计了一个undefined,表示“缺少值”,即此处应有一个值,但还没有定义;转为数值时为NaN (非数字值的特殊值)。

  Number(undefined); //NaN

  5+undefined; //NaN

  典型的出现场景如下:

  (1)变量被声明了,但没有赋值;

  (2)调用函数时,应提供的参数未提供;

  (3)对象没的属性未定义;

  (4)对象没有返回值,则默认返回undefined

var i;
console.log(i); //undefined

function f(x){
    console.log(X);
}
f(); //undefined

var o=new Object();
o.name; //undefined

var x=f();
x; //undefined

 

posted @ 2018-03-07 10:00  rachelch  阅读(197)  评论(0)    收藏  举报