@panhonhang
2018-08-13T11:11:19.000000Z
字数 977
阅读 504
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. ;