浅谈Null和Undefind
zhanglei
风流倜傥小小张
git:zhnaglei.github.io
在javascript中,null是字面量同时也是语言中的关键字,用来表示无法识别的对象,换句话说,就是用来表示“无值(no value)”,虽然undefined实际上也表示不存在的值。
其都是完全不可变得,没有属性没有方法,也不能给其属性复制的,事实上,如果访问一个或定义一个属相将会引发一个类型的错误,正如他们的命子一样,他们完全是无效的值。
null==0; //false
undefined=="" //false
null==false //false
undefined==false //false
null==undefined //true
尽管如此,但是null和undefined并不是等价的,每个作为独特的类型的唯一成员,undefined是undefined类型和null是null类型,使用等价操作符其比较两个值:
undefined===null; //false
其实你可以理解为undefined代表一个意想不到的得没有值而null作为预期没有值得代表。
产生undefined的值
1.访问一个不存在的值
var foo //undefined
2.访问一个不存在的对象属性或数组时,返回的值为undefined
var array = [1, 2, 3];
var foo = array.foo; // foo 属性不存在, 返回 undefined
var item = array[5]; // 数组中没有索引为5的项,返回 undefined
3.函数没有返回值的时候,返回值为undefined
var value = (function(){})(); // 返回 undefined
4.函数调用时未提供参数
(function(undefined){
// 参数是 undefined
})();
5.void操作符也是可以返回一个undefined值
function isUndefined(obj){
return obj === void 0;
}
总结:undefined是一个预定的全局变量(不像null关键字)初始化为undefined
undefined is window //true
产生null的值
null通常作为一个空应,常用做一个空对象的预热,就像一个占位符。
1.获取不到元素
var notExist= document.getElementById('notExist');//null
2.原型链的终点,也是返回null
Object.getPrototypeOf(Object.prototype)//null