咱們都知道在 JavaScript 中 for...in 和 for...of 均可以迭代一個數組,但他們之間也有着很大的區別:javascript
for...in 和 for...of 最明顯的區別莫過於他們用於迭代器的返回值不一樣,for...in 迭代的是對象的鍵,而 for...of 迭代的是對象的值。咱們能夠經過下面的例子對兩者進行區分:java
const array = [3,4,5] for (let i in array) { console.log(i) //0,1,2 } for (let i of array) { console.log(i) //3,4,5 }
另外一個區別在於,for...in 能夠操做任何對象,提供了查看對象屬性的一種方法。可是 for...of 關注迭代對象的值,內置對象Map和Set已經實現了Symbol.iterator 方法,讓咱們能夠訪問它們的值:數組
const fruits = new Set(['apple','pear','mango']) fruits['peach'] = 'Princess Peach! Make a wish!' for(let fruit in fruits) { console.log(fruit) //peach } for (let fruit of fruits) { console.log(fruit) //apple pear mango }
可是這樣的特性僅僅在 ES6 及以上才生效。app