# **Null:空类型**
  Null 是 Javascript 中特殊的原始数据类型,它只有一个值,即 null,字面意思是:“空值” 。它的语义是,希望**表示一个对象被人为的重置为空对象,而非一个变量最原始的状态 。** 在内存里的表示就是,栈中的变量没有指向堆中的内存对象。当一个对象被赋值了 null 以后,原来的对象在内存中就处于游离状态,GC 会择机回收该对象并释放内存。因此,如果需要释放某个对象,就将变量设置为 null,即表示该对象已经被清空,目前无效状态。
  null 是原始数据类型 Null 中的唯一一个值,但 typeof 会将 null 误判为 Object 类型 。
```
typeof null =='object'
```
  在 JavaScript 中,数据类型在底层都是以二进制形式表示的,**二进制的前三位为 0 会被 typeof 判定为对象类型**,如下所示:
* 000 - 对象,数据是对象的应用
* 1 - 整型,数据是31位带符号整数
* 010 - 双精度类型,数据是双精度数字
* 100 - 字符串,数据是字符串
* 110 - 布尔类型,数据是布尔值
而 null 值的二进制表示全是 0 ,自然前三位当然也是 000,因此,typeof 会误以为是对象类型。如果想要知道 null 的真实数据类型,可以通过下面的方式来获取。
```
Object.prototype.toString.call(null) ;// [object Null]