码迷,mamicode.com
首页 > 其他好文 > 详细

区分 for...in 和 for...of

时间:2019-11-05 00:30:08      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:返回   bsp   apple   iterator   一个   不同   let   app   区别   

  我们都知道在 JavaScript 中 for...in 和 for...of 都可以迭代一个数组,但他们之间也有着很大的区别:

 

区别一:用于迭代器的返回值不同

  for...in 和 for...of 最明显的区别莫过于他们用于迭代器的返回值不同,for...in 迭代的是对象的键,而 for...of 迭代的是对象的值。我们可以通过下面的例子对二者进行区分:

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 及以上才生效。

 

 

 

区分 for...in 和 for...of

标签:返回   bsp   apple   iterator   一个   不同   let   app   区别   

原文地址:https://www.cnblogs.com/belongs-to-qinghua/p/11795753.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!