1、for循环通常用来遍历数组或类数组对象
模式1:长度缓存
for(var i=0,max=arr.length;i<max;i++){
//your code
}
模式2:逐减,与零比较比与非零比较速度快
var i,myarrary=[];
for(i=myarray.length;i--;){
//code
} var myarray=[],i=myarray.length;
while(i--){
//code
}
2、for-in循环用来遍历非数组对象。
与for循环不同的是,for-in循环是对对象每个属性(包括对象原型链的属性)的枚举,并且它并不是按照属性排列的顺序(无序)来的。
模式1:object.hasOwnProperty(propname); //如果proname是非继承属性,返回true;如果不存在或是从原型链继承属性,返回false。
for(var i in man){
if(man.hasOwnProperty(i)){
//code
}
}
模式2:用call
var i,hasOwn = Object.prototype.hasOwnProperty;
for(i in man) if(hasOwn.call(man,i)){
//code
}