1.基础for循环,虽然写法麻烦,但是好处在于可以同时操作index和item,而且可以随时跳出循环。
2.因为原始for循环写法麻烦效率低,所以数组提供了内置的forEach方法,做整体的遍历操作可以,但是中途无法跳出循环。
3.for-in 操作对象时候,只能返回键名,对于数组来说就是它的数字下标,弊端在于除了遍历数组中内容,还会遍历原型链上的键,for-in的设计更适合遍历对象,不适应于数组。而且并不能很准确的保证顺序。
4.for-of循环相比上面几种做法,语法简单,且可以随时跳出循环,但是唯一问题是遍历项的single bind,对于数组来说只能操作item无法同时操作item和index。
基础for
作用:数组
const arr = [1,2,3];
for(let i = 0; i<arr.length;i++){
console.log(arr[i]);
}
注意:
1.定义i时,如果用的是var,注意作用域的问题。使用let时,一个for内就是一个作用域。
2.如果i的初始值是动态的,而第二个参数用的是这个i值的初始化,所以不用担心后续第二个参数会改变。特别是在双层for中,需要注意这个问题。
forEach
作用:数组
注意:
-
修改item,不改变原始数据的值
-
会自动过滤空值,但是不会过滤undefined、null、NaN
-
中途没有办法跳出循环,但是可以用函数和try-catch来实现。
-
回调函数中,有return啥也没有用。
for-in
- 不應該用來迭代一個索引順序很重要的陣列,比如数组。应该不能保证顺序。
- 会遍历数组上自定义原型上的属性,不过可以通过hasOwnProperty()来过滤
for of
看ES6