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

dis*_*cer 2 javascript arrays indexing loops

好的,我有这个代码:

var room = [ { time: 0, people: 0 } ];
Run Code Online (Sandbox Code Playgroud)

然后:

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

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

Jan*_*nen 13

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