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
更加合适
这是一些比较初步的分析,如果大家有更加详细的点,欢迎留言补充哦!