const obj = {
a: 1,
b: 2,
c: 3
}
for (let i in obj) {
console.log(i)
// a
// b
// c
}
for (let i of obj) {
console.log(i)
// Uncaught TypeError: obj is not iterable 报错了
}

---> 说明 for in 可以打印出对象, for of 不能打印出对象

    const arr = ['a', 'b', 'c']
// for in 循环
for (let i in arr) {
console.log(i)
// 0
// 1
// 2
}
-----------------》 说明for in 就是 key

// for of for (let i of arr) { console.log(i) // a // b // c }

--> for of 数组没有毛病

总结一句: for in 循环特别适合遍历对象。
  • for of 循环用来获取一对键值对中的值,而 for in 获取的是 键名

  • 一个数据结构只要部署了 Symbol.iterator 属性, 就被视为具有 iterator接口, 就可以使用 for of循环。

    例1这个对象,没有 Symbol.iterator这个属性,所以使用 for of会报 obj is not iterable

  • for of 不同与 forEach, 它可以与 break、continue和return 配合使用,也就是说 for of 循环可以随时退出循环。

  • 提供了遍历所有数据结构的统一接口

只要有 iterator 接口的数据结构,都可以使用 for of循环。

  • 数组 Array
  • Map
  • Set
  • String
  • arguments对象
  • Nodelist对象, 就是获取的dom列表集合

以上这些都可以直接使用 for of 循环。 凡是部署了 iterator 接口的数据结构也都可以使用数组的 扩展运算符(...)、和解构赋值等操作。

http://www.fly63.com/article/detial/1444

最新文章

  1. Xamarin+Prism开发详解五:页面布局基础知识
  2. linux查看进程启动时间
  3. being词典案例分析
  4. Objective C运行时(runtime)技术的几个要点总结
  5. 81 Search in Rotated Sorted Array II
  6. php下载文件的代码示例
  7. lintcode:在O(1)时间复杂度删除链表节点
  8. C语言连接MySQL数据库(课程设计总结)
  9. toggle
  10. Maven搭建SpringMVC+Hibernate项目详解
  11. spring源码测试
  12. jekyll博客安装
  13. 清理收缩VMware虚拟机MacOS系统的vmdk文件大小
  14. Javascript一道面试题
  15. CentOS 7 服务器配置--安装nginx
  16. 如何用一天时间实现自己的RPC框架
  17. freemarker报错之四
  18. (五十)Quartz2D生成图片的一些应用
  19. 原生JS替代jQuery的各种方法汇总
  20. Python3-Cookbook总结 - 第三章:数字日期和时间

热门文章

  1. STM32L4 Keil ST-Link 连接失败
  2. Map Inference in the Face of Noise and Disparity代码环境搭建
  3. godis实战
  4. 如何免费获取高清动图并将其插入到Markdown中
  5. Corundum:100G NIC学习(二)——仿真
  6. elasticsearch相关概念及常用操作汇总
  7. cuda+pytorch环境安装
  8. FastAPI中声明参数为必需的三种方式
  9. Asp.NET core/net 5接口返回实体含有long/int64的属性序列后最后几位变为0的解决
  10. 2022-05-20内部群每日三题-清辉PMP