遍历数组通常用for循环
ES5的话也可以使用forEach,ES5具有遍历数组功能的还有map、filter、some、every、reduce、reduceRight等,只不过他们的返回结果不一样。但是使用 forEach 遍历数组的话,使用 break 不能中断循环,使用 return 也不能返回到外层函数。
for in
使用for in会遍历数组所有的可枚举属性,包括原型。所以for in更适合遍历对象。
for (var key in myObject) {
if(myObject.hasOwnProperty(key)){
console.log(key);
}
}
记住,for in遍历的是数组的索引(即键名),而 for of 遍历的是数组元素值。
for of
适用遍历数/数组对象/字符串/map/set等拥有迭代器对象的集合.但是不能遍历对象,因为没有迭代器对象。
也可通过以下形式使用 for of 遍历对象
// Object.keys/values/entries
for (var key of Object.keys(someObject)) {
console.log(key + ": " + someObject[key]);
}
getOwnPropertyNames
方法返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组。
性能
接下来我们对比一下 for in
、for
、 while
的执行效率