遍歷對(duì)象數(shù)組,用基本的for循環(huán)能實(shí)現(xiàn),但for (x in array[])卻實(shí)現(xiàn)不了
使用for循環(huán)遍歷input對(duì)象數(shù)組的時(shí)候下面這樣寫(xiě) var hobby = document.getElementsByTagName("input"); for(var i=0;i<hobby.length;i++) 可以實(shí)現(xiàn),但是寫(xiě)for(i in hobby)就不行,為什么呢?
2016-08-02
for語(yǔ)句是固定形式啊。
2016-08-02
var hobby = document.getElementsByTagName("input");
hobby并不是一個(gè)array
這樣轉(zhuǎn)成array
var arr = Array.prototype.slice.call(hobby);
2016-08-02
是這樣的: for in 并不是你理解的那種遍歷效果。
for in 遍歷的不是數(shù)組,而是那個(gè)對(duì)象,也就是hobby 這個(gè)對(duì)象,它遍歷訪問(wèn)的每個(gè)值其實(shí)是hobby的每個(gè)屬性,而不是數(shù)組元素,不信你可以用
for(var i in hobby){
alert(i);
}
來(lái)看看每個(gè)i到底是誰(shuí),肯定不是數(shù)組元素。
for 循環(huán)根據(jù)下標(biāo)訪問(wèn)的才算真是的數(shù)組元素。
所以for in 和for 是有區(qū)別的。
并且,使用for in 的效率要遠(yuǎn)低于for循環(huán)哦