首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

【转】解剖JavaScript中的null跟undefined

2012-10-26 
【转】解剖JavaScript中的null和undefined?? ?在JavaScript开发中,被人问到:null与undefined到底有啥区别???

【转】解剖JavaScript中的null和undefined

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


????????if(x?==?undefined)??????//作用域上的引用比较
????????【转】解剖JavaScript中的null跟undefined
????????
????????while(y?!=?undefined)???//作用域上的引用比较
????????【转】解剖JavaScript中的null跟undefined
????};

?  其中,定义undefined局部变量时,其初始值会是对window.undefined属性值的引用。新定义的局部undefined变 量存在与该函数的作用域上。在随后的比较操作中,JavaScript代码的书写方式没有任何的改变,但比较速度却很快。因为作用域上的变量数量会远远少 于window对象的属性,搜索变量的速度会极大提高。

  这就是许多前端JS框架为什么常常要自己定义一个局部undefined变量的原因!

原著:李战(leadzen).杭州-阿里软件 2009-2-18
原址:http://blog.csdn.net/leadzen/archive/2009/02/17/3899392.aspx
【转载请注明作者及出处】

热点排行
Bad Request.