for
- for(){} 循环是ES中最原始的循环方法,可以兼容所有的浏览器
- for 循环可以遍历数组,也可以遍历类似 arguments 这样的伪数组对象
forEach
- ES5 方法,不支持IE8及以下浏览器
- 它的语句结构里面不支持break、continue和return语句 ,break和continue会直接报错,不会读取return语句
- 只能遍历数组,无法遍历伪数组对象
语法:
回调函数的参数分别为:元素、索引、数组本身
array.forEach(function(value,index,array){
执行语句....
}
for…in
- for…in 即可遍历数组,也可以遍历伪数组对象
- 遍历时,获取到的时键值对中的 键,然后根据键去获取需要的值
- 但是,该方法会把原型链上的所有属性都访问一遍
var arr = [1,2,3,4,5];
Array.prototype.test = "abc";
for(var i in arr){
console,log(arr[i]); //输出 : 1,2,3,4,5,“abc"
}
使用hasOwnProperty()方法可以检测一个属性是否存在于实例中还是存在于原型中,该方法只有在给定的属性存在于对象的实例中时才会返回true。
所以遍历数组和对象时进行判定,就可以不再遍历原型中的属性了
for(var i in arr){
if(arr.hasOwnProperty(i)){
console.log(arr[i]); //1,2,3,4,5
}
}