Javascript for / in循环遍历属性,而不是索引和返回字符串

时间:2009-07-03 02:04:21

标签: javascript arrays indexing loops

好的,我有这段代码:

var room = [ { time: 0, people: 0 } ];

然后:

time = 5;
for( var i in room ) {
  if( room[i].time < time ){
    spliceIndex = i + 1;
  }
}
console.log(spliceIndex);

控制台显示:01 - 这表示连接1,这进一步意味着i是一个字符串,而不是预期的整数。将索引转换为整数修复了问题,但我敲了几个小时......我能解释为什么会发生这种情况吗?我在Firefox 3.5和Safari 4上得到了这个。

1 个答案:

答案 0 :(得分:13)

因为for-in列出了对象属性,而不是数组索引。对象属性是字符串,数组索引显示为属性,只有它们是数字字符串。