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

浙公网安备 33010602011771号