日期:2014-05-16 浏览次数:20316 次
?? ?在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)的属性。请看下面的代码: ? 注意:尽管undefined是有特殊含义的属性,但却不是JavaScript的保留关键字。 undefined参与任何数值计算时,其结果一定是NaN。 随便说一下,NaN是全局对象(window)的另一个特殊属性,Infinity也是。这些特殊属性都不是JavaScript的保留关键字!
?????var?anObj?=?{};
???? alert('undefined'?in?anObj);????//输出:false
从中可以看出,undefined是window对象的一个属性,但却不是anObj对象的一个属性。