for 循环
其实他一般情况下是根据数组,类数组的length的属性值去循环
for in
一般的作用是枚举把key枚举出来,但是当我们枚举数组,或者字符串的时候会把原型上的方法枚举出来
Object.prototype.objCustom = function () { };
Array.prototype.arrCustom = function () { };
var arr = [3, 5, 7];
arr.foo = 'hello';
for (var i in arr) {
console.log(i);
}
// 结果是:
// 0
// 1
// 2
// foo
// arrCustom
// objCustom
for of
一般是迭代把值输出出来,但是不可以迭代对象,但是对数组,字符串以及,还可以迭代类型数组~”;还可以迭代Map~;还可以迭代Set~”;“还可以迭代generators……都是可以的
说到迭代就有一个forEach要来对比一下了
- forEACH 可以拿到index也就算key值,但是不可以终止遍历,而for of可以
总计
- 对于纯对象的遍历,for..in要厉害一些(数组有把原型上的方法枚举出来)
- 对于数组遍历,如果不需要知道索引,for..of迭代更合适,因为还可以中断
- 如果需要知道索引,则forEach()更合适
- 字符串,类数组,类型数组的迭代,虽然for..in也有这方面能力,但是for..of更好
参考
看,for..in和for..of在那里吵架!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)