2 w123560 w123560 于 2015.05.26 01:04 提问

js中用for in 语句遍历数组问题

var arr=new Array(3);
用for循环遍历:
for(var x=0;x<arr.length;x++){
document.write(arr[x]);
}
网页上显示:undefined undefined undefined

现在用for in 遍历:
for(var x in arr){
document.write(arr[x]);
}
为什么网页上什么都不显示?

7个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.05.26 01:11

这两种方式有差异的,对于第一种方式来说,在new的时候确定了array的大小,循环数组大小取值,因为没有初始值,都是undefined.
第二种方式是通过array的属性方式,是不关心数组大小的,只关心里面内容,因为没有赋值,因为只有长度,实际内部还是没有内容,无法形成key,value的方式,也就没有输出。

frank_20080215
frank_20080215   2015.05.26 05:54

var arr=new Array(3);
用for循环遍历:
for(var x=0;x<arr.length;x++){
document.write(arr[x]);
}
网页上显示:undefined undefined undefined
arr没有初始化,所以显示未定义的错误

现在用for in 遍历:
for(var x in arr){
document.write(arr[x]);
}
为什么网页上什么都不显示?
因为这个数组,没有初始化,所以循环没有满足条件去运行

gamefinity
gamefinity   Rxr 2015.05.26 06:13

用for in,直接写document.write(x);就可以了。x不是数组的下标而是数组中的值

ffl594276991
ffl594276991 不对,js中的for in 循环和java还有C#中不一样 x为下标
2 年多之前 回复
u012271952
u012271952   2015.05.26 08:46

很显然嘛,你的数组没有初始化,所以提示undefined。

IamMengTao
IamMengTao   2015.05.26 09:24

数组里面没东西,没初始化

jiashucheng1987
jiashucheng1987   2015.05.26 09:39

引入jquery用each循环最好了

qq_26041081
qq_26041081   2015.05.26 11:53

第一种相当于x是索引值,输出用arr[x],第二种和第一种是有区别的,输出肯定不能还是那样。。。第二个没有初始化内容也不会显示。。。

Csdn user default icon
上传中...
上传图片
插入图片