网络编程
位置:首页>> 网络编程>> JavaScript>> 解剖JavaScript中的null和undefined

解剖JavaScript中的null和undefined

作者:李战 来源:软件真谛 发布时间:2009-03-01 12:49:00 

标签:undefined,null,JavaScript,区别

在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的保留关键字!

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com