0

菜鸟 JS 问题在这里:

for( var p in ['nodeName', 'nodeType', 'tagName', 'localName'] ) {
    console.log( p + '=' + all[i][p] + '\n' );
}

我希望看到类似的东西

nodeName=DIV

相反,我得到

0=undefined

我是否被迫将数组分配给一个变量,以便我可以索引它?有没有办法在 for-in 中使用这种语法并从数组中检索字符串?

谢谢!

4

1 回答 1

6

使用for..in数组几乎总是错误的。它迭代对象属性,而不是值 -s 因此在您的情况下,它会产生 0、1、2 和 3。如果您决定使用自定义方法进行扩展,情况会变得更糟(与扩展不同,这不是一个很大的禁忌)。使用时,它们的名称也会被迭代。Array.prototypeObject.prototypefor..in

做你想做的事情的正确方法是:

var foo = [...];
for(var i = 0; i < foo.length; i++) {
    // use foo[i]
}

或者这个(在现代浏览器中或使用 shim'd 的功能):

[...].forEach(function(value) {
    // use value
});
于 2012-08-17T22:25:39.537 回答