区分 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

相关文章
相关标签/搜索