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更好
參考