我们都知道在 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 及以上才生效。

最新文章

  1. Redis集群(四):主从配置二
  2. 运费模版源码(.net)
  3. C#的157个建议--读书笔记(一)
  4. OpenJudge计算概论-求特殊自然数【枚举法】【将整数转成字符串】
  5. SQLite&&SharedPreferences&&IO读写Sdcard学习笔记
  6. shell运行报 too many arguments错误
  7. ES6学习笔记(二)
  8. ubuntu系统安装flashplayer
  9. Jsp中三种注释
  10. 解析一下rtmp协议比较难懂的地方
  11. Oracle SQL Lesson (5) - 使用组函数输出聚合数据
  12. CentOS系统下搭建tomcat服务器
  13. 关于处理java.lang.IllegalArgumentException at java.sql.Date.getHours异常
  14. SQLite 线程安全和并发
  15. 【cf842D】Vitya and Strange Lesson(01字典树)
  16. linux解压类型总结
  17. 学习笔记TF025:自编码器
  18. vc下项目的头文件包含目录以及库导入预计库目录设置
  19. Python学习-19.Python的Http模块
  20. 把NDK的工具链提取出来单独使用

热门文章

  1. promise封装ajax
  2. ViewModel、LiveData、DataBinding
  3. 「JSOI2015」套娃
  4. Java_Habse_add
  5. java使用bitmap求两个数组的交集
  6. dp(装箱)
  7. 微信小程序媒体音乐API更新小记,以及音乐外链制作方法
  8. Amoeba介绍及原理
  9. Hadoop学习笔记(三):分布式文件系统的写和读流程
  10. 第八届极客大挑战 Web-iPhone X