当前位置:首页 > 解剖JavaScript中的null和undefined

解剖JavaScript中的null和undefined

点击次数:1511  更新日期:2011-01-05

在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)的属性。请看下面的代码:


<!–
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
–> alert(‘undefined’ in window); //输出:true


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