1、测试目的:对比JS 中for、while、for in、for of、for each效率
2、测试环境: Node环境和Chrome浏览器环境
3、测试方法:分别使用上述待测接口遍历数组

测试代码如下:

测试结果:
Node环境结果如下

Chrome浏览器环境结果如下

结论:
a)、for与while效率相差无几
b)、for > for each > for in > for of

附上测试源码:

var arr = []
console.time('write array')
for (var i = 0; i < 1000 * 1000; i++) {arr.push(i)
}
console.timeEnd('write array')console.time('for loop read')
var sum0 = 0
for (var j = 0; j < 1000 * 1000; j++) {sum0 += arr[j]
}
console.timeEnd('for loop read')console.time('while read')
var sum1 = 0, index = 0
while (index < 1000 * 1000) {sum1 += arr[index]index++
}
console.timeEnd('while read')console.time('for in read')
var sum2 = 0
for (let key in arr) {sum2 += arr[key]
}
console.timeEnd('for in read')console.time('for of read')
var sum3 = 0
for (let value in arr) {sum3 += value
}
console.timeEnd('for of read')console.time('for each read')
var sum4 = 0
arr.forEach(function (item) {sum4 += item
})
console.timeEnd('for each read')

JS 中for、while、for in、for of、for each效率对比相关推荐

  1. 在js中使用HashMap数据结构,在js中使用K,V数据结构

    首先是定义一个HashMap方法,做基类(复制在js中即可,然后引用) //简单的哈希表,begin function HashMap() {/** Map 大小 * */var size = 0;/ ...

  2. [JavaScript] 探索JS中的函数秘密

    函数长啥样? 把一些要重复使用的内容封装到函数内. function foo(title) {console.log(title) } foo('title') foo('dust') foo('he ...

  3. 在node.js中,使用基于ORM架构的Sequelize,操作mysql数据库之增删改查

    Sequelize是一个基于promise的关系型数据库ORM框架,这个库完全采用JavaScript开发并且能够用在Node.JS环境中,易于使用,支持多SQL方言(dialect),.它当前支持M ...

  4. 在JS中最常看到切最容易迷惑的语法(转)

    发现一篇JS中比较容易迷惑的语法的解释,挺有用的,转载下,与大家分享: js中大括号有四种语义作用 语义1,组织复合语句,这是最常见的 Js代码  if( condition ) { //... }e ...

  5. js去el的map_转:el表达式获取map对象的内容 js中使用el表达式 js 中使用jstl 实现 session.removeattribute...

    原文链接: 总结: el表达式获取map对象的内容 后端: HashMap map1 = new HashMap(); map1.put("key1","lzsb&quo ...

  6. js中substr,substring,indexOf,lastIndexOf的用法

    js中substr,substring,indexOf,lastIndexOf等的用法 1.substr substr(start,length)表示从start位置开始,截取length长度的字符串 ...

  7. js中的各种宽高以及位置总结

    在javascript中操作dom节点让其运动的时候,常常会涉及到各种宽高以及位置坐标等概念,如果不能很好地理解这些属性所代表的意义,就不能理解js的运动原理,同时,由于这些属性概念较多,加上浏览器之 ...

  8. WKWebView Safari调试、JS互调、加载进度条、JS中alert、confirm、prompt

    主要内容 Safari调试 swift/OC与JS互调 增加加载进度条 支持JS中alert.confirm.prompt Safari调试 设置 -> safari --> 高级,开启J ...

  9. 彻底理解js中this

    相关博文:http://blog.csdn.net/libin_1/article/details/49996815 彻底理解js中this的指向,不必硬背. 首先必须要说的是,this的指向在函数定 ...

  10. 彻底理解js中this的指向

    首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...

最新文章

  1. Pytorch之GPU加速计算问题以及model=model.to(device)
  2. html下拉框换行,HTML列表框换行文本
  3. SAP ui5 control lifecycle - registration and deregistration
  4. ewebeditor未授权:功能被禁用请先配置授权_SteamPY新功能——外区账号礼物自动领取...
  5. 比较运算符(ComparisonOperator)
  6. 深度学习之于传统计算机视觉
  7. Bailian4072 判断多个点是否在同一直线【数学】
  8. 机器人学导论,课后习题答案。
  9. python连接hive--Pyhive
  10. scala安装与配置(详细步骤)
  11. 记住网站建设这几个步骤
  12. SpringBoot水果商城后台管理系统(文末附源码)
  13. 世预赛:12强赛首战国足0-3不敌澳大利亚,下一场面对日本队国足会如何调整?
  14. linux ipv6 前缀 定义,IPv6 地址前缀
  15. Markdown中如何打对勾/对号
  16. HDU 2111 JAVA
  17. 人的大脑就是量子计算机吧,新发现!人类大脑其实就是台量子电脑
  18. Unity2D游戏使游戏角色跳跃的脚本(包括长按跳跃加成)
  19. 赴美生子入境经验汇总
  20. 计算机专业必须要i7处理器,懂电脑的人为什么不买i7处理器?有什么依据吗?...

热门文章

  1. windows 2022IE浏览器证书安全访问解答和理解
  2. 端口号被占用解决办法
  3. 流量监控器Bro特性、历史及架构
  4. java 微信自定义菜单 java微信接口开发 公众平台 SSM redis shiro 多数据源
  5. VS 关于打开程序时不是有效的Win32应用程序
  6. JAVA(JNA)内联汇编之外挂编写(魔域宝宝出征CALL)
  7. 数据结构:KMP算法 串的模式匹配算法(全网最详细)
  8. 学习笔记--深度学习入门--基于Pyrhon的理论与实现--[日]斋藤康毅 -- 持续更新中
  9. React实现插槽(solt)
  10. win10远程桌面连接出现你的凭证不工作的简单解决方法