例如for (key in obj),每次遍历key都会被赋值成对象obj的一个键名,{a:1,b:2}遍历过程key依次为a和b对于数组,key取得是数组下标
所以你这里遍历的是个数组,i的值分别是数组的下标,用for in遍历数组可能会由于数组增加可枚举的成员而变得不准确
你可以试一下在你的代码前加上
Array.prototype.a = 123
再运行看下结果就有问题了,不要用for in 遍历数组用forEach
JS就这么规定的。主要是因为getElementsByTagName反回的是数组数组有length属性。但是在定义obj时候它并不知道自己是数组类型的(弱类型特点)所以这个时候你直接去obj.length你会发现他的返回值是“未定义”这时候就需要getElementsByTagName去告诉obj“你是个数组!!!”于是返回一个数组特有的属性length给obj.汗。这帮人小看楼主了。to2想到这点的应该不会不知道for(vari=0i<obj.lengthi++){怎么用吧。to1for(variinobj)这个东西应该是遍历obj中的[i],而不是单指属性吧。