JavaScript null 和 undefined

null

在JavaScript中,null表示对一个空对象的引用。

console.log(typeof null);  //object

如果我们声明了一个变量,并且将来要用这个变量来引用对象时,通常我们会初始化其为null。

undefined

在JavaScript中,undefined是一种基本数据类型。用来表示一个已声明但未赋值,或根本就不存在的“变量”。

var a;
console.log(typeof a);  //undefined
console.log(typeof b);  //undefined

这里要说一下,算了还是直接看代码吧。。。

var a;
console.log(a);  //undefined
console.log(b);  //ReferenceError: b is not defined

就是说,如果一个变量声明了但未赋值,则它的值和类型都为undefined。如果一个变量在特定作用域中未声明,它的类型为undefined,但使用它的值将报错。

联系

null 和 undefined 值相同,但类型不同。

console.log(null == undefined);  //true
console.log(null === undefined);  //false

注意

我们通常会使用null 和 undefined来检验一个变量是否存在,但需注意:

错误的检验方式:

if (myObject !== null && typeof myObject !== 'undefined'){
    //对象存在
}
//如果myObject根本就未声明,使用一个未声明的变量,语句myObject !== null将会报错

正确的检验方式:

if (typeof myObject !== 'undefined' && myObject !== null){
    //对象存在
}