for…of 是ES6新增的遍历方式,for…in是ES3的遍历方式
for…of 是用于循环数组、字符串、Map、Set等数据类型中的元素。 for in 是用于循环对象的属性名。
for… in 会遍历对象的整个原型链,而 for … of 只遍历当前对象不会遍历原型链;
对于数组的遍历,for…in 会返回数组中所有可枚举的属性(包括原型链上可枚举的属性),for…of 只返回数组的下标对应的属性值。
总结:
for…in 循环主要是为了遍历对象而生,它迭代对象的键(key)而不是值(value)。 不适用于遍历数组;
for…of 循环可以用来遍历遍历可迭代对象(如数组、字符串、Set、Map等),它迭代对象的值(value)而不是键(key)。