for in 和 for of 的对比

fon infor of 最大的区别就是:一个是对键名 key 的遍历,一个是对键值 value 的遍历

使用 for in 也能遍历数组,但会存在一些问题:

  1. index 索引为字符串型数字,不能直接进行几何运算
  2. 和遍历顺序对象的行为一样,使用 for in 会遍历数组所有可枚举的属性,所以原型对象上的方法和属性也会被遍历
  3. 遍历的顺序可能不是按照实际数组的内部顺序
// 所以遍历出来的索引是"0"、"1"这种形式的
// meMethod 这个原型对象上的属性也会被遍历出来
// 出来的顺序也不一定是原先书写的顺序
let arr = [1, 2, 3];
Array.prototype.myMethod = function () {console.log(this.length);
};

for of 专注于遍历的 value 值的同时,不会发生原型对象,和对象本身的属性被遍历出来的问题。同样是上面的例子,它不会出现 myMethod 这个属性值

最后,两个无关谁更好用,每个方法都有对应的场景,看谁更适合。结合上面的利弊分析,结论是:

遍历对象使用 for in,遍历数组使用 for of 更加合适

这是一些比较初步的分析,如果大家有更加详细的点,欢迎留言补充哦!

for in 和 for of 的对比相关推荐

  1. 不同编程语言之间的具体实现对比

    不同语言之间的具体实现对比 官网地址:https://programming-idioms.org/ 这个网站的核心存储部分代码是开源的,使用 Go 语言实现.源码地址: https://github ...

  2. 正向最大匹配 和逆向最大匹配对比比较

    正向最大匹配法 &逆向最大匹配法 原理对比 下面介绍的分词算法中最简单的正向最大匹配和反向最大匹配. 这种两种方法都是机械分词方法,它是按照一定的策略将待分析的汉字串与一个"充分大的 ...

  3. JDBC与数据库连接工具对比分析

    JDBC 使用步骤: 注册数据库驱动 通过DriverManager获取数据库连接 通过Connection对象获取Statement对象 使用Statement执行SQL语句 操作ResultSet ...

  4. GeforceRTX系列参数对比

    GeforceRTX系列参数对比

  5. YOLO、SSD、FPN、Mask-RCNN检测模型对比

    YOLO.SSD.FPN.Mask-RCNN检测模型对比 一.YOLO(you only look once) YOLO 属于回归系列的目标检测方法,与滑窗和后续区域划分的检测方法不同,他把检测任务当 ...

  6. RCNN系列、Fast-RCNN、Faster-RCNN、R-FCN检测模型对比

    RCNN系列.Fast-RCNN.Faster-RCNN.R-FCN检测模型对比 一.RCNN 问题一:速度 经典的目标检测算法使用滑动窗法依次判断所有可能的区域.本文则预先提取一系列较可能是物体的候 ...

  7. TCP/UDP对比总结

    在计算机网络中,有三种体系结构划分方式,第一种是OSI七层协议体系结构,由上到下分别是:应用层,表示层,会话层,运输层,网络层,数据链路层,物理层:第二种是TCP/IP四层协议,由上到下分别是:应用层 ...

  8. XML和JSON数据格式对比

    概念 XML 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语 ...

  9. 对比两个同类型的泛型集合并返回差异泛型集合 ——两个List类名的比较

    1: /// <summary> 2: /// 对比两个同类型的泛型集合并返回差异泛型集合 3: /// </summary> 4: /// <typeparam nam ...

  10. 《OpenCV3编程入门》学习笔记9 直方图与匹配(三)直方图对比

    9.3 直方图对比 9.3.1 对比直方图:compareHist()函数 1.作用:   比较两幅直方图 2.函数原型: (1)double compareHist(InputArray H1,In ...

最新文章

  1. 解决 win10 pycurl安装出错 Command python setup.py egg_info failed with error code 10 编译安装包 安装万金油...
  2. 技术图文:进一步完善自动化交易系统 - 03
  3. vscode for mac怎样关闭自动更新
  4. python3所支持的整数进制_Python3快速入门(三)——Python3标准数据类型
  5. jquery的一次点击实现
  6. 2048源码 linux,分享|2 的威力,Linux 的威力:终端中的 2048
  7. java访问控制关键字_Java 访问控制关键字
  8. vs 2017插件visual assist 10.9.2238破解版安装指南及百度云链接
  9. Nsight Visual Studio Edition初学使用方法
  10. Linux下mysql数据恢复
  11. flashtool线刷工具
  12. C# 通过api 下载sharepoint中的文件
  13. java speex回声消除_android – Speex回音消除配置
  14. Dynamics CRM 2013学习伊始
  15. RedHat认证笔记-RH124
  16. VulnHub1:Jangow: 1.0.1靶机入侵
  17. 金融工程---马尔科夫预测
  18. [图文]历届奥斯卡影后(上)
  19. C语言中+=的含义你明白吗?
  20. 39、基于51单片机声控光控灯人体感应路灯照明灯系统设计

热门文章

  1. 30 个与程序猿有关的成语
  2. ZZULIOJ周赛 问题 E: 维克托
  3. Graylog-日志系统简介
  4. python图像拼接_python opencv 图像拼接的实现方法
  5. 2017双十一阿里技术汇总
  6. 一文了解提权:溢出提权和第三方组件提权
  7. 突发!李开复宣布加入中文版ChatGPT大战!要打造AI 2.0全新平台!
  8. 众人围剿,GPT-5招惹了谁
  9. 【图像增强】基于matlab双边滤波retinex算法暗光图像增强【含Matlab源码 2305期】
  10. matlab简单函数迭代法,MATLAB简单迭代法