前端面试宝典 每日一题(14)关于null 和 undefined 以及 typeof null 、typeof NaN的一些思考

‍写在前面的话:
这个系列文章可能开始,有人会觉得很low,我是打算从H5先开始整理,最后到常见的前端框架、以及一些前端常见的算法、leetcode的一些算法解析,感兴趣的小伙伴可以持续关注,每天分享一个前端知识点,希望大家一起进步。

这篇文章主要给大家介绍一下JS最常见的两个数据类型null 和 undefined 的区别,以及typeof null 、typeof NaN的区别

1.关于null 和 undefined 的一些思考

  • 首先 Undefined 和 Null 都是基本数据类型,undefined 代表的含义是未定义,null代表的含义是空对象。
  • 一般变量声明了但还没有定义的时候会返回undefined,null主要用于赋值给一些可能会返回对象的变量,作为初始化。
  • undefined 在 JavaScript 中不是一个保留字,
  • 当对这两种类型使用 typeof 进行判断时,Null 类型化会返回“object”。
  • 当使用双等号对两种类型的值进行比较时会返回 true三个等号时会返回 false。

2.typeof null 、typeof NaN的一些思考

从运行结果中我们能够清晰的看到 typeof null 的结果是Object、typeof NaN 是Number,

前端面试宝典 每日一题(14)关于null 和 undefined 以及 typeof null 、typeof NaN的一些思考_第1张图片

下面我们来探究一下他们的主要形成这样的主要原因:

首先是关于 typeof null 的一些解析:

在 JavaScript 第一个版本中,所有值都存储在 32 位的单元中,每个单元包含一个小的 类型标签(1-3 bits) 以及当前要存储值的真实数据。类型标签存储在每个单元的低位中,共有五种数据类型:
000: object - 当前存储的数据指向一个对象。
1: int - 当前存储的数据是一个 31 位的有符号整数。
010: double - 当前存储的数据指向一个双精度的浮点数。
100: string - 当前存储的数据指向一个字符串。
110: boolean - 当前存储的数据是布尔值。
null 的值是机器码 NULL 指针(null 指针的值全是 0),所以null和Object的类型标签一样,会被判定为Object。

其次是关于typeof NaN 的一些解析:
NaN 是用于指出数字类型中的错误情况,即数学运算没有成功,失败后返回的结果,他是数字的一种特殊情况,所以在使用typeof 判定的时候会返回Number

你可能感兴趣的:(面试题,前端,javascript)