JavaScript中的null和undefined

 2015年03月26日    32     声明


NullUndefined都属于JavaScript中的值类型。两种类型有相似之处,以至于我们常常将两者弄混,二者做比较运算null==undefined结果为true,而这两个值的用途却各不相同。


关于Null

Null一般用来做对象的占位符使用,应该使用Null的场景:

  • 用来初始化一个可能赋值的对象
  • 用来和一个已经初始化的变量做比较,这个变量可以是也可以不是一个对象
  • 函数参数希望值是对象,做为参数传入
  • 函数返回希望值是对象,做为返回值传出

以下场景中不应该使用Null

  • 检测某个参数是否传入时
  • 检测未初始化的变量时

关于Undefined

UndefinedNull不同。没有初始化的变量都有一个初始值,即undefined。在代码中应该尽量避免使用Undefined,这个值常常和typeof运算符返回的'undefined'混淆。不管是未初始化的变量还是未定义的变量,typeof都会返回'undefined',而对nulltypeof操作时,其返回值为'object'

示例如下:

var foo;

console.log(typeof foo);    // 'undefined'

console.log(typeof boo);    // 'undefined'

console.log(typeof null);   // 'object'