區分 for...in 和 for...of

  咱們都知道在 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

相關文章
相關標籤/搜索