[关闭]
@panhonhang 2018-08-13T11:11:19.000000Z 字数 977 阅读 489

null与undefined的区别

JavaScript


null与undefined的行为非常相似,甚至相等运算还会输出true。

undefined == null
// true

还有在if语句中null与undefined都会被认为是false。它们如此相似但是依然存在一些差别。

undefined === null
// false

使用全等操作符就可以看到返回的是false也就是说它们并不全等。

现在让我们来看看它们哪里不一样

null用来描述“空值”

假如执行typeof(null)会返回字符串“object”。

typeof(null)//object

undefined的值是“未定义”
用typeof运算符得到undefined类型,返回undefined。

typeof(undefined)//undefined

变量没有初始化时或者函数没有返回值,都会返回undefined。

产生undefined的情况:

1.在变量提升(预解析)阶段,只声明未定义,默认值就是undefined。
2.在JS的严格模式下,没有明确的主体,this指的就是undefined。
3.函数定义没有返回值,默认的返回值就是undefined。
4.函数定义形参不传值,默认就是undefined。
5.对象没有这个属性名,属性值默认就是undefined。

产生null的情况
1.手动设置变量的值或者对象某一个属性值为null。
2.在JS的DOM元素获取中,如果没有获取到指定的元素对象,结果一般是null。
3.Object.prototype.proto的值也是null。
4.在正则捕获的时候,如果没有捕获到结果,默认也是null

总结:

1.undefined表示一个变量没有被声明,或者未初始化,一个没有传入实参的形参变量的值为undefined,如果一个函数什么都不返回,则该函数默认返回undefined;
2.null是一个表示“没有值”的值;
3.Javascript将未赋值的变量默认值设为undefined;
4.Javascript从来不会将变量设为null。它是用来让程序员表明某个用var声明的变量时没有值的;
5.undefined不是一个有效的JSON,而null是;
6.undefined的类型(typeof)是undefined,null的类型(typeof)是object. ;

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注