初学javaScript的时候,我们总是容易混淆对于数组和对象的遍历方法。js中循环语句有forEach,for in,for of 三种。网上有很多资料,对于刚开始接触js的童鞋们来说讲的有点过深,不一定能看的明白,所以在这这里我们通俗的解释一下,希望能帮助到大家。
总结:
1、对于数组来说,for-of 遍历的数组的value值,也就是数组元素的值。而for-in则遍历的是数组的键值,也就是数组的index。foreach也遍历的是数组的value值,但与for-in不同的是:在遍历的过程中不能被终止,必须每一个值遍历一遍后才能停下来,即在foreach遍历的过程中,不支持相应的break,continue退出循环和不能使用return语句返回到外层。
for-in:
1、for-in主要用来遍历对象的属性,包括对象继承自原型对象的属性。常用在遍历拥有enumerable属性的对象。
enumerable(可枚举)形如:{name:sugar,sex:female};
2、但是!!尽量不要用for-in遍历数组:原因主要是,for-in主要得到数组的键,但该键的类型确是String类型,代码如下:
结果为String。所以如果你自我认为index是数字类型,继而用来做相关的计算,则会得到不一样的结果。最让人震惊的是,在某些情况下,这段代码可能按照随机顺序遍历数组元素。所以for-in主要是用来循环带有字符串key的对象的方法。
for-of:作为ES6中新出的循环方法,比for-in,foreach有很多优势。
1、可以遍历多种类型的数据。是最简单的遍历数组的方法,语法如下:
2、弥补了foreach在循环过程中不能被中断的缺点。
3、还可以遍历字符串,类型化的数组(TypedArray),ES6新出的Map,Set类型的数据,同时利用object.key()可以用来遍历具有enumerable属性的数据。
希望对大家有帮助哈~欢迎大家指正