fon in 和 for of 的區別

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在那裏吵架!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章