JS:循环遍历数组(for ... in)

Jie*_*eng 1 javascript arrays for-loop

为什么当我这样做

http://jsfiddle.net/xe4Ph/1/

var footnoteLinks = [1,2,3];
for (var i in footnoteLinks) {
   document.write(footnoteLinks[i] + ", ");
}
Run Code Online (Sandbox Code Playgroud)

我得到的是......

1,2,3,function(){return lower; },function Array(){[native code]},function pop(){[native code]},function push(){[native code]},function reverse(){[native code]},function shift() {[native code]},function sort(){[native code]},function splice(){[native code]},function unshift()

这是为什么?什么功能等...我觉得它工作正常b4,我不知道是什么导致了这一点,对于我尝试的所有浏览器似乎都一样.Firefox 3.6,Chrome 6(我认为?),IE9

Wes*_*n C 6

for(var in obj)是用于遍历一个对象的属性.您将获得已创建的Array对象的属性.

您需要更传统的循环/索引构造:

for(var i=0,z=footnoteLinks.length; i<z; i++)
Run Code Online (Sandbox Code Playgroud)

一些JavaScript运行时也有mapreduce对数组对象的方法,但是这不能保证.但是,大多数JavaScript库都有类似的东西(或许是一种each方法).