简单的区别是:
for…of得到是value, for…in得到的是key.
下面详细说区别。
for…of是在es6时出现的。与其对应的是Iterator接口。Iterator接口对应的是可以返回遍历器对象的方法。这个方法使用[Symbol.iterator]
标记。因为遍历器对象返回的是当前值。所以for…of得到的value.
for…in是在当前对象的除Symbol属性以外的可枚举属性组成的列表中遍历。所以for…in得到的是对象的属性。
用途
for…of一般用于Array/String/Set/Map… 因为他们有Iterator接口
for…in一般用于Object/类数组 因为Object没有Iterator接口
发表回复