JS中的for和for in循环
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 }