最近在看javascript权威指南(第六版),在7.3节中,有下面这段代码
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,后来又打印了里面的元素
console.log(arr2); // [undefined,undefined,undefined]
console.log(arr3); // [undefined,undefined,undefined]
上面显示的数组里都是undefined,而当我循环时,却啥都木有
for(var i in arr2) {
console.log(i+'='+arr2[i]) //没有显示
}
for(var i in arr3) {
console.log(i+'='+arr3[i]) //没有显示
}
当我改动一处时,
var arr2 = [undefined,,,];
var arr3 = new Array(3);
console.log(0 in arr2); //true
console.log(0 in arr3); //false
我想问下,这里的undefined之间的区别
------解决方案--------------------
呵呵,骂得好。NND
此undefined非彼undefined
照我看嘛:
第一个返回false,是因为数组中没有元素
第二个返回true,是因为数组中指定数组下标有值,所以返回true。相当于判断arr2[0]有没有值了
var arr2 = [undefined,,,];
console.log(1 in arr2); //照样是false