浅谈undefined和null

浅谈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
张磊,技术菜鸟一枚,在web开发中一直苦苦挣扎,追求上岸! 联系QQ:1908002007 有技术问题可以随时联系,闲聊也是可以的!欢迎打扰!
原文地址:https://www.cnblogs.com/zhnaglei/p/6564010.html