【JavaScript】undefined与null的区别

相似之处(虽然是大标题是区别,但咱们也谈谈相似之处)

  1. undefinednull是JavaScript的基本数据类型。

JavaScript中基本数据类型就是存储简单的数据段,包括:underdifinednullbooleannumberstring 等。引用类型就是可能由多个值构成的对象,包括:对象,数组,Map,Set等。

  1. 二者的布尔值均为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

总结

上面只是说了它们的表现。其实完全可以把 nullundefined 分别看做独立的单个空集合。因为空集合没有任何元素属于它们本身,所以它们没有元素,并且永远没有元素和其相等,因此始终为 false
js 的 nullundefined 相当于一个全集中有了两个子空集合,这是不正确的。但是,为了理解清楚,只能把 undefined 当做 null 的别名。空集合不等于空集合,所以 undefined 不等于 null

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值