文章目录
曾看到过这么一道测试题:
null == undefined //true
null竟然与undefined相等,感觉上null和undefined都是代表空值的数据,那么它们到底有什么区别呢?
在JavaScript中,五种基本数据类型分别是:Number、String、Boolean、Undefined、Null,其中,Undefined和Null是只有一个值的数据类型,分别是:undefined、null。
Undefined类型
该类型只有一个值:undefined。什么情况下会给一个变量赋予undefined这个值呢?
-
当声明一个变量,但未给其赋值时
-
当一个函数没有return或者return后啥也没有返回的,默认返回undefined
-
函数中设置了形参,可是执行时没有传递参数,则此参数为undefined
-
当访问一个对象中不存在的属性时,返回undefined
typeof是一个用来检测给定变量的数据类型的操作符。
typeof undefined会返回undefined,因为undefined是Undefined数据类型的值。
而typeof 一个未声明或者未初始化的变量,也是返回undefined,因为对于未声明的变量,JavaScript会自动给其赋予undefined值,
Null类型
该类型只有一个值:null。
使用typeof 操作符检测null值时,并不是返回"null",而是返回"object",这是因为null值表示一个空对象指针,所以返回的是"object"。
null==undefined 是true,实际上,undefined值是派生自null值的,因此ECMA-262规定对他们的相等性测试要返回true。
- 当通过DOM中提供的属性或方法获取页面时的标签时,如果标签不存在,返回的是null,而不是undefined
- 想释放一个堆内存时,将其赋值为null即可
- 正则匹配时,exec与match,当不匹配时,是返回null