typeof null 的结果是什么?为什么?

简介: 首先要知道,这并不是设计者希望出现的结果,这是一个bug。后来也提出过修复这个bug的提案,但是由于这个bug影响的范围太大,也就没有及时更正,越到后面影响范围也越广,所以就不修复了。

typeof null的结果是什么?

首先typeof null的结果为object


为什么?

首先要知道,这并不是设计者希望出现的结果,这是一个bug。后来也提出过修复这个bug的提案,但是由于这个bug影响的范围太大,也就没有及时更正,越到后面影响范围也越广,所以就不修复了。


Js中的基本数据类型都存储在32位的二进制单元当中,低三位的数字用于表示该数据的类型。低三位数字和表示类型的对应关系如下:

  • 000: object - 当前存储的数据指向一个对象。
  • 1: int - 当前存储的数据是一个 31 位的有符号整数。
  • 010:double - 当前存储的数据指向一个双精度的浮点数。
  • 100: string - 当前存储的数据指向一个字符串。
  • 110:boolean - 当前存储的数据是布尔值。


有两种特殊数据类型:

1.undefined 的值是 (-2)30 (一个超出整数范围的数字)

2.null 的值是机器码 NULL 指针(null 指针的值全是 0)


typeof的实现就是通过判断低三位的数字来判断值类型的。当传入一个null的时候,因为null存储时32位的数字表示都是0,所以低三位也是0,typeof就将其认定为object类型的了。

相关文章
|
5月前
|
JavaScript 前端开发
为什么typeof null 是object
为什么typeof null 是object
|
2月前
|
机器学习/深度学习 JavaScript 前端开发
JavaScript typeof, null, 和 undefined
JavaScript typeof, null, 和 undefined
53 4
定义好变量,${age}模版字符串,对象可以放null,检验数据类型console.log(typeof str)
定义好变量,${age}模版字符串,对象可以放null,检验数据类型console.log(typeof str)
|
6月前
|
JavaScript 前端开发
为什么typeof null == 'object' 为true?
为什么typeof null == 'object' 为true?
31 0
|
JavaScript 前端开发 Java
为什么使用typeof判断数据类型的时候null出来是object?
为什么使用typeof判断数据类型的时候null出来是object?
|
JavaScript
JS typeof null 为什么是object
我们从源码解析看这个问题 我们的JS 是 经过V8 引擎编译的 所以我们需要调试V8
74 0
JS typeof null 为什么是object
|
前端开发 JavaScript
web前端学习(三十七)——JavaScript typeof、null、undefined及简单类型转换的相关设置
web前端学习(三十七)——JavaScript typeof、null、undefined及简单类型转换的相关设置
web前端学习(三十七)——JavaScript typeof、null、undefined及简单类型转换的相关设置
|
JavaScript 前端开发
JavaScript typeof, null, 和 undefined
typeof 操作符 你可以使用 typeof 操作符来检测变量的数据类型。 Null 在 JavaScript 中 null 表示 "什么都没有"。 null是一个只有一个值的特殊类型。表示一个空对象引用。
922 0
|
6月前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之从MySQL同步数据到Doris时,历史数据时间字段显示为null,而增量数据部分的时间类型字段正常显示的原因是什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。