for...of: (ES6)提供统一的遍历机制,所有实现了[Symbol.iterator]接口的对象都可以被遍历。可迭代对象包括Array,Map,Set,String,TypedArray,arguments对象等,Object不是可迭代对象。for...in: 循环以任意序遍历一个对象的可枚举属性,功能类似于Object.keys()。对象的有些属性以相同的方式标记成了只读的,永久的即不可删除的或者不可列举的,这些属性使用这种循环不能枚举出来,比如length、constructor以及String的indexOf()方法或Object的toString()方法。用户定义的属性都可以枚举,但是内部属性以及所有的内部方法都是不可枚举的。另外对象可以继承其他对象的属性,那些已继承的用户定义的属性可以使用该方法循环枚举出来。因为迭代的顺序是依赖于执行环境的,所以数组遍历不一定按次序访问元素。因此当迭代访问顺序很重要的数组时,最好用整数索引去进行for循环(或者使用Array.prototype.forEach()或for...of循环)forEach: 遍历数组,是数组的一个方法。需要传入一个回调函数,并且无法使用return退出当前函数。
相关文章: