null==undefined //true

undefined类型来源于null,null和undefined都是js中只有一个值的数据类型 特殊值分别是null和undefined

但不同的是 ,

1.null

null 表示空对象指针,typeof是object  而且其他语言都有null ,那什么情况会输出null呢

 

所以只有将变量定义为null时输出null  其他返回虽然是空对象 但可能会返回undefined或者object

 

所以判断XX值是否为空可以使用 XX==undefined  XX==null(但如果xx是undefined也是对 用===)

2.undefined

而undefined是js才有的,申明一个未初始化的变量,得到的是undefined,typeof出来是undefined,undefined的引入是为了区分空指针对象和未初始化的变量,是一个预定义的全局变量。没有返回的函数返回undefined,没有实参的形参也是undefined 。但如果直接alert(age)(age没有申明)会报错,如下:

 

从技术角度两种变量有本质的区别,但实际上无论是哪种变量都不可能执行真正的操作

但如果判断未申明的变量的对象输出时undefined,那未初始和未申明在typeof都是输出undefined,那如何来判断这个变量是属于未申明还是未初始化呢?

所以需要我们显式的初始化变量如var msg = 0;