搜索:
首页 >> JavaScript >> Js高级编程 >> 解剖JavaScript中的null和undefined

解剖JavaScript中的null和undefined

2009-3-1 作者:李战 来源:软件真谛 投递文章

在JavaScript开发中,被人问到:null与undefined到底有啥区别?

一时间不好回答,特别是undefined,因为这涉及到undefined的实现原理。于是,细想之后,写下本文,请各位大侠拍砖。

总所周知:null == undefined

  但是:null !== undefined

那么这两者到底有啥区别呢?

请听俺娓娓道来...


null

  这是一个对象,但是为空。因为是对象,所以 typeof null  返回 'object' 。

  null 是 JavaScript 保留关键字。

  null 参与数值运算时其值会自动转换为 0 ,因此,下列表达式计算后会得到正确的数值:

  表达式:123 + null    结果值:123

  表达式:123 * null    结果值:0


undefined

undefined是全局对象(window)的一个特殊属性,其值是未定义的。但 typeof undefined 返回 'undefined' 。

虽然undefined是有特殊含义的,但它确实是一个属性,而且是全局对象(window)的属性。请看下面的代码:

alert('undefined' in window);   //输出:true

     var anObj = {};
     alert('undefined' in anObj);    //输出:false

从中可以看出,undefined是window对象的一个属性,但却不是anObj对象的一个属性。

注意:尽管undefined是有特殊含义的属性,但却不是JavaScript的保留关键字。

undefined参与任何数值计算时,其结果一定是NaN。

随便说一下,NaN是全局对象(window)的另一个特殊属性,Infinity也是。这些特殊属性都不是JavaScript的保留关键字!

1   2 下一页 尾 页
相关文章