for in 和 for of 的對比

for in 和 for of 的對比

fon infor of 最大的區別就是:一個是對鍵名 key 的遍歷,一個是對鍵值 value 的遍歷

使用 for in 也能遍歷數組,但會存在一些問題:

  1. index 索引爲字符串型數字,不能直接進行幾何運算
  2. 和遍歷順序對象的行爲一樣,使用 for in 會遍歷數組所有可枚舉的屬性,所以原型對象上的方法和屬性也會被遍歷
  3. 遍歷的順序可能不是按照實際數組的內部順序
// 所以遍歷出來的索引是"0"、"1"這種形式的
// meMethod 這個原型對象上的屬性也會被遍歷出來
// 出來的順序也不一定是原先書寫的順序
let arr = [1, 2, 3];
Array.prototype.myMethod = function () {
    console.log(this.length);
};

for of 專注於遍歷的 value 值的同時,不會發生原型對象,和對象本身的屬性被遍歷出來的問題。同樣是上面的例子,它不會出現 myMethod 這個屬性值

最後,兩個無關誰更好用,每個方法都有對應的場景,看誰更適合。結合上面的利弊分析,結論是:

遍歷對象使用 for in,遍歷數組使用 for of 更加合適

這是一些比較初步的分析,如果大家有更加詳細的點,歡迎留言補充哦!

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