JavaScript中的null在其他编程语言中也很常见,但是JavaScript在设计的过程中null自动转换为0,为了更好表示空,这个时候undefined出现了,null通过typeof结果是“object”,undefined通过typeof表示这个值是这个类型的唯一成员。null和undefined中都是表示值的空缺,不过两者当做布尔值时都是false,通过==的时候都是相等的,但是null和undefined分别字符串,数字,布尔值相比都是false。
Null和Undefined区别
JavaScript取值为null的情况有两种:
//获取不到元素
1.var notExist= document.getElementById('notExist');//null //原型链的终点,也是返回null的
2.Object.getPrototypeOf(Object.prototype)//null
undefined的情况如下:
①变量声明,未赋值;
var a;//undefined
②查询对象的属性或数组元素的值不存在时,返回undefined;
var arr=[1,2,3];//博客园-FlyElephant
console.log(arr[5]);//undefined
③函数没有任何返回值的时候返回undefined;
function f(){};console.log(f());//undefined
④引用没有提供实参的函数形参的值会得到undefined:
function f(x){console.log(x);}f();//undefined
题外话
以前有一个很经典的JavaScript问题:
if (!("a" in window)) {
var a = 1;
}
console.log(a);//博客园-FlyElephant
最后输出的是undefined,其中a是可以访问的,所有的声明都是提前声明的,a最开始的定义值是undefined,"a" in window是真,因此赋值语句没法执行到,最后的执行结果是undefined;