JavaScript 里头有四种 for 循环,下面将其一一介绍
其一,最基本的
大部分语言都具备的 for 循环,长相普通,是为标准 for 循环
1 | var sum = 0; |
适用于有索引的循环,比如数组
其二,for…in
也是大部分语言具备的 for 循环,比如 python 就只有这种 for 循环。在 JavaScript 中,可以作用于对象和数组上
遍历对象
1 | var o = { |
遍历对象得到的是对象的属性,可以通过属性得到属性值
遍历数组
准确来说,Array 也是对象,但 Array 比较特殊,来看看遍历出的是啥
1 | var arr = ['A','B','C']; |
遍历出的是数组的索引,需要注意的是打印出来的索引是 String 而非 Number
其三,for…of
ES6 引入了一个新的 for 循环,主要针对 ES6 引入的 iterable
类型,其中 Array
、Set
和 Map
都属于 iterable
类型
for…of 和 for…in 写法是一样的,但为啥要弄个新的呢,因为 for…in 是作用于对象的,我们知道 Array 也是对象,那就会存在一个问题,比如
1 | var arr = ['A','B','C']; |
因为对象时可以随意添加属性的,所有如果给数组添加一个属性,在用 for…in 遍历的时候,就会把这个属性也打印出来,但是用 for…of 则不会
1 | var arr = ['A','B','C']; |
而且,输出的不再是数组的索引,而是数组的值
对于 Set 和 Map 的遍历
1 | var s = new Set(['A','B','C']); |
注意,for…in 对 Set 和 Map 无效
其四,forEach
forEach()
方法是 ES5.1 引入的,iterable
内置了 forEach
方法,它接收一个函数,回调自身元素和自身
1 | var arr = ['A','B','C']; |
小总结,打完收工!