相似之处(虽然是大标题是区别,但咱们也谈谈相似之处)
undefined与null是JavaScript的基本数据类型。
JavaScript中基本数据类型就是存储简单的数据段,包括:
underdifined,null,boolean,number和string。引用类型就是可能由多个值构成的对象,包括:对象,数组,Map,Set等。
- 二者的布尔值均为
false
不同之处
概念
undefined代表了不存在的值(nonexistence of value),null代表了无值(no value)。用一段代码能够较号理解。
let a;
console.log(a);
// undefined
let b = null;
console.log(b);
//null
复制代码
由上面的代码得知,undefined表示变量已经声明,但是没有赋值。因为它的值是不存在的,所以为undefined。
null表示变量已经声明,且变量赋值为null(为空),所以为结果为null。
比较与区分
比较
null == 0
//false
null == ""
//false
null == false
//false
undefined == 0
//false
undefined == ""
//false
undefined == false
//false
undefined == null //注意!注意!注意!
//true
undefined === null //注意!注意!注意!
//false
复制代码
区分(一)
- 检查变量是否为空
age === null - 检查变量是否未定义
age === undefined - 在两种情况下
if( !age ){ ...do something...}
区分(二)
- 检查变量是否为空
let age = null;
typeof age;
//object
复制代码
- 检查变量是否未定义
let age;
typeof age;
//undefined
复制代码
null是一个对象吗,为什么typeof age输出为null?
null不是一个对象,尽管typeof age输出的是Object,这是一个历史遗留问题,JS 的最初版本中使用的是 32 位系统,为了性能考虑使用低位存储变量的类型信息,000 开头代表是对象,null表示为全零,所以将它错误的判断为Object。
总结
上面只是说了它们的表现。其实完全可以把 null 和 undefined 分别看做独立的单个空集合。因为空集合没有任何元素属于它们本身,所以它们没有元素,并且永远没有元素和其相等,因此始终为 false 。
js 的 null 和 undefined 相当于一个全集中有了两个子空集合,这是不正确的。但是,为了理解清楚,只能把 undefined 当做 null 的别名。空集合不等于空集合,所以 undefined 不等于 null。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END




















![[桜井宁宁]COS和泉纱雾超可爱写真福利集-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/4d3cf227a85d7e79f5d6b4efb6bde3e8.jpg)

![[桜井宁宁] 爆乳奶牛少女cos写真-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/d40483e126fcf567894e89c65eaca655.jpg)