读书人

关于疏落数组的疑惑

发布时间: 2012-10-06 17:34:01 作者: rapoo

关于稀疏数组的疑惑
最近在看javascript权威指南(第六版),在7.3节中,有下面这段代码

JScript code
var arr2 = [,,,];var arr3 = new Array(3);console.log(0 in arr2);  //false  ====>书中写的true:0在arr1处有一个元素console.log(0 in arr3);  //false


我在火狐、ie9、chrome中测试了都是false,后来又打印了里面的元素

JScript code
console.log(arr2); // [undefined,undefined,undefined]console.log(arr3); // [undefined,undefined,undefined]


上面显示的数组里都是undefined,而当我循环时,却啥都木有
JScript code
for(var i in arr2) {    console.log(i+'='+arr2[i]) //没有显示}for(var i in arr3) {    console.log(i+'='+arr3[i]) //没有显示}

当我改动一处时,
JScript code
var arr2 = [undefined,,,];var arr3 = new Array(3);console.log(0 in arr2);  //trueconsole.log(0 in arr3);  //false


我想问下,这里的undefined之间的区别



[解决办法]
呵呵,骂得好。NND

此undefined非彼undefined

照我看嘛:
第一个返回false,是因为数组中没有元素
第二个返回true,是因为数组中指定数组下标有值,所以返回true。相当于判断arr2[0]有没有值了

var arr2 = [undefined,,,];
console.log(1 in arr2); //照样是false

读书人网 >JavaScript

热点推荐