undefined
undefined: 对象变量了,但是未定义。值是undefined
当使用var 或者let声明一个变量没有初始化时,就相当于给变量赋予了一个undefined值
默认情况下,任何未经初始化的变量都会取得 undefined 值。
typeof undefined // undefined
null
null: null表示一个空值。
从逻辑上来说,null 值表示一个空对象指针,这也是给typeof 传一个 null 会返回"object"的原因
typeof null // object
在定义将来要保存对象值的变量时,建议使用 null 来初始化,不要使用其他值。这样,只要检查这个变量的值是不是 null 就可以知道这个变量是否在后来被重新赋予了一个对象的引用
区别:
1、undefined 值是由 null 值派生而来的
用等于操作符(==)比较 null 和 undefined 始终返回 true。但要注意,这个操作符会为了比较而转换它的操作数。
2、即使 null 和 undefined 有关系,它们的用途也是完全不一样的。
永远不必显式地将 变量值设置为 undefined。但 null 不是这样的。任何时候,只要变量要保存对象,而当时又没有那个对象可保存,就要用 null 来填充该变量。这样就可以保持 null 是空对象指针的语义,并进一步将其与 undefined 区分开来。