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