for in 和 for of 的對比
fon in
和 for of
最大的區別就是:一個是對鍵名 key
的遍歷,一個是對鍵值 value
的遍歷
使用 for in
也能遍歷數組,但會存在一些問題:
index
索引爲字符串型數字,不能直接進行幾何運算- 和遍歷順序對象的行爲一樣,使用
for in
會遍歷數組所有可枚舉的屬性,所以原型對象上的方法和屬性也會被遍歷 - 遍歷的順序可能不是按照實際數組的內部順序
// 所以遍歷出來的索引是"0"、"1"這種形式的
// meMethod 這個原型對象上的屬性也會被遍歷出來
// 出來的順序也不一定是原先書寫的順序
let arr = [1, 2, 3];
Array.prototype.myMethod = function () {
console.log(this.length);
};
而 for of
專注於遍歷的 value
值的同時,不會發生原型對象,和對象本身的屬性被遍歷出來的問題。同樣是上面的例子,它不會出現 myMethod
這個屬性值
最後,兩個無關誰更好用,每個方法都有對應的場景,看誰更適合。結合上面的利弊分析,結論是:
遍歷對象使用
for in
,遍歷數組使用for of
更加合適
這是一些比較初步的分析,如果大家有更加詳細的點,歡迎留言補充哦!