undefined的研究,谈其于null,NaN之间的差异

      Flash 2004-11-7 12:15
在云开's blog看到研究undefined与null的区别

里面说到
引用:

如下情况返回 undefined 值:
一、对象属性不存在,
二、声明了变量但从未赋值。



其实还有第三种方法就是....声明一个变量再赋值为undefined
var c = undefined;

而这样子做,有一个地方显然于前两者不同

就是在for..in循环种...如果是先两者(第一种情况不提了)假设声明一个数组
var array1 = new Array(10);
for(var i in array1) trace(array1[i]); // 没有循环
trace(array1.length) // 数组长度为10
/////////////////////////////////////////////////////
var array2 = new Array(10);
for(var i=0; i<10; i++) array2[i]=undefined;

for(var i in array2) trace(array[i]); // 输出十个undefined
trace(array2.length) // 数组长度为10

一种是没有赋值,也就是undefined,一种是赋值为undeinfed,同样为undefined,for...in作出了不同的反应

大概是因为for...in查询的是对象中的元素,而不是值,同样的undefined,前一种是没有元素意义上的undefined,是真正的undefined
而后一种是有元素且值为undefined,差不多就是骗人用的

那么结合云开所说的,我理解了一下
如果声明一个变量为null是为了吸引garbage collector,释放资源
那么声明一个变量为undefined就是为了让他处于待命状态,而不准备释放资源

hoho...结合之前发现的一个NaN bug...这下更好的理解了
undefined , Nan , null之间的差异
标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}