奇怪的for循环的结果-for(n in document.links){...}

今天在看一些教程的代码时发现,有个for循环,与java的for循环不一样:

var array = new Array("Jack","Tom","Mary","Kate");

for(index in array){

  document.write(array[index]);

}

奇怪的是for循环里的index,这个到底是个索引还是个对象,从循环体里面看,它应该是个索引,困扰我的是它这个index是不是固定要这么写的,试了一下,可以用别的字符来做,说明不是固定写法。我正纳闷呢,如果有那么多固定的写法,哪里记得住那么多啊。

 

另外,要注意的是,系统自带的数组,比如document.links这样的数组,如果使用for(n in document.links)这样的形式来直接取links里的元素,打印出各个元素的href,name,childNodes等属性或子节点的值,那么会报错,因为这些系统自带的数组,里面什么内容,直接想是想不到的,不过如果使用普通的for循环,如for(n=0;n<XXX.length;n++)这样的形式还是比较安全的,可以直接输出里面各个元素的值。

 

试了发现,document.links数组第0个元素并不是第1个超链接对象,而是length的值,如果使用document.links[0]这样来取值,它确实又是第1个超链接对象,这个是什么原因?

用普通的for循环for(n=0;n<document.links.length;n++)取第N个元素,和 用特殊的for循环for(n in document.links)取第N个元素,两者的第0个元素的值是不一样的,前者能取到正确的第1个超链接对象,后者却取出的是undefined,所以不能把特殊的for循环在任意场合直接使用。

如果是自己创建的数组或已经明确知道数组存放的内容的情况下,这2种for循环可以任意选一种使用。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值