一、使用场景不同
- for in 适用于可枚举属性,例如对象、数组、字符串
- for of 适用于可迭代对象,例如Array、String、Map、Set、函数的arguments对象、nodeList对象
二、遍历范围不一样
- for in 能遍历自身的可枚举属性和原型上的可枚举属性
- for of 一般只能遍历自身的可枚举属性(具体和迭代器内部的实现有关)
三、得到的结果不一样
- for in 得到的是key(并且不能保证顺序)
- for of 得到的是value(具体和迭代器内部的实现有关)
一般情况下,遍历对象就用for in,遍历数组就用for of
for in 遍历对象得到key,遍历数组得到下标 for of 不能遍历对象,遍历数组得到值