在云开's blog看到研究undefined与null的区别
里面说到
其实还有第三种方法就是....声明一个变量再赋值为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之间的差异
里面说到
引用:
如下情况返回 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之间的差异
回复Comments
作者:
{commentrecontent}