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 更加合适

这是一些比较初步的分析,如果大家有更加详细的点,欢迎留言补充哦!

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