位置: 编程技术 - 正文

深入探究JavaScript中for循环的效率问题及相关优化(深入探究替换词)

编辑:rootadmin

推荐整理分享深入探究JavaScript中for循环的效率问题及相关优化(深入探究替换词),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:深入探究的反义词,深入探究的成语,深入探究日本文化中的母亲形象,深入探究的近义词,深入探究的事例,深入探究的成语,深入探究的意思,深入探究的近义词,内容如对您有帮助,希望把文章链接给更多的朋友!

Underscore.js库

你一天(一周)内写了多少个循环了?

这当然无害,但这种写法非常丑而且奇怪,这也不是真正需要抱怨的。但这种写法太平庸了。

你在扩展糟糕的代码,在你抛出一大堆if前,你已经精神错乱了。我在两年里没有写一个循环(loop)。“你在说什么?”这是真的,一个冷笑话。其实不是一个都没有(好吧,我确实写了几个),因为我不写循环(loops),我的代码更容易理解。怎么做的呢?

或者更好一点:

这就是underscorejs所做到的。干净,简单,易读,短,没有中间变量,没有成堆的分号,简单非常优雅。这是另外一些例子。

同样,一个使用循环浪费时间的典型用例。即便这些网站是宣传禁烟和素食主义的,看到这些代码我也感到义愤。看看简单的写法。

像underscore中的filter(过滤)的名字那样,随手写的3行代码就可以给你一个新的数组(array)。或者你想把这些数组转换成另外一种形式?

上面三个例子在日常生活中已经够用了,但这些功能还不足矣让underscore放到台面上。

underscore版本

这个刚开始看上去可能有点怪,我查了下关于reduce的文档,知道了它的存在。因为我拒绝使用循环,所以它是我的首选。上面这些东西仅仅是入门,underscorejs库还有一大堆牛B的功能。

天不使用循环的挑战。

在一下一个天里,不要使用任何循环,如果你看到一堆讨厌和粗糙的东西,用each或者map将他们替换掉。再用一点reducing。

深入探究JavaScript中for循环的效率问题及相关优化(深入探究替换词)

你需要注意到,Underscore是通往函数式编程的。一种看得见,看不见的方式。一条很好的途径。

OurJS注*目前现代浏览器已经支持each, filter, map, reduce方法,但underscore库可以实现对旧版IE的兼容,下面是使用ES5原生方法写的例子:

for in与for loop

有人提出for in的效率要比for loop(循环)的效率低非常多。现在我们测试一下在不同浏览器中使用for in, for loop和forEach在处理大数组时的效率究竟如何。

目前绝大部分开源软件都会在for loop中缓存数组长度,因为普通观点认为某些浏览器Array.length每次都会重新计算数组长度,因此通常用临时变量来事先存储数组长度,如:

我们也会测试一下缓存与不缓存时的性能差异。

同时在每个测试循环中添加求和运算,来表明其不是空循环。

我们也会测试一下缓存与不缓存时的性能差异。

同时在每个测试循环中添加求和运算,来表明其不是空循环。

测试代码如下,点击运行即可查看HTML 代码

JavaScript 代码

运行 [需稍等片刻]测试结果测试结果可能因计算而异,这是在我机器上运行用,Firefox, Chrome, IE三者测试结果拼接的一张汇总。

以下是几个观察到的结论

for in比for loop慢非常多,在Chrome中至少慢倍 FF对forEach(ES5)做了优化,性能比for loop还要好一点,但Chrome/IEn性能均较差 FF/Chrome缓存Array.length均比直接用时要慢一点。除IE最新版缓存后性能提升微乎其微(这一点非常意外) 在某些情况下,FF的JS引擎性能似乎比V8要好些

GitHub上一些实用的JavaScript的文件压缩解压缩库推荐 项目里要用到archive和unarchive整个已存在的folder,在找解决方案的时候尝试了一些当前比较流行的library,主要有adm-zip,JSZip,archiver等。一.Useadm-zipadm-zip支

javascript实现PC网页里的拖拽效果 几年前,我参与设计开发一个房产网的项目,我负责前端工作,由于项目经理要求比较高,参考了很多房产类网站比较优秀的功能,想把别人比较优秀

javascript实现数组去重的多种方法 废话不多说,直接拿干货!先说说这个实例的要求:写一个方法实现数组的去重。(要求:执行方法,传递一个数组,返回去重后的新数组,原数组不

标签: 深入探究替换词

本文链接地址:https://www.jiuchutong.com/biancheng/377498.html 转载请保留说明!

上一篇:简单谈谈json跨域(jsonp如何解决跨域问题)

下一篇:GitHub上一些实用的JavaScript的文件压缩解压缩库推荐(github常用操作)

  • 新成立的公司不开户可以吗
  • 采用现金支付
  • 预缴所得税的计税依据
  • 融资性售后回租是什么服务
  • 税率调整后之前签的合同用变更吗
  • 自制半成品具体如何处理账务?
  • 材料采购计入什么会计科
  • 房地产公司缴纳契税的会计分录
  • 开发商乱要回迁怎么投诉
  • 关于小规模纳税人的说法错误的有
  • 福利费的进项税额转出
  • 股东借款可以转为认缴出资
  • 资产负债表中应收账款的计算公式
  • 土地所有权和使用权的法律规定
  • 分公司交总公司管理费怎么做账
  • 营业外支出汇算清缴调增填哪
  • 公司章程出资时间怎么填写
  • 商业汇票付款方通过哪个会计科目核算
  • 查账征收改为核定征收需要什么资料
  • 门诊医保报销流程详细步骤
  • 建筑施工企业在12个月内连续发生
  • 用人单位逾期未缴纳社会保险费可能会使用的文书
  • linux路由器配置实例
  • 小规模季度不超过30万的账务处理
  • 职工福利费的扣除限额怎么算
  • 滴滴代驾报酬
  • 外贸公司进出口权办理流程
  • 电脑非法关机后开机进不了系统
  • 企业党建活动经费管理办法的规定
  • php 链式调用
  • php fork
  • 收到银联商务付款短信
  • 银行承兑汇票开出后可以撤销吗?
  • php中url什么意思
  • 票据贴现融资有哪些潜在的风险
  • PHP:time_nanosleep()的用法_misc函数
  • linux系统中文输入法切换不出来
  • 电力系统常用的接线有哪几种
  • php中通过什么属性可以获取数组中元素的个数
  • 秋日里通往卢浮宫的杜乐丽花园,法国巴黎 (© Brian A. Jackson/Getty Images Plus)
  • 企业存货期末应如何计价
  • php文件上传用什么请求方法
  • uniapp dom操作
  • 银行承兑汇票贴现分录
  • 代垫费用开票明细怎么写
  • 如何扣除企业接单费用
  • 发生售后维修领用材料分录
  • 开具增值税专用发票是什么意思
  • 专用发票跨月冲红流程
  • 全年一次性奖金税率表2023最新
  • 服务不动产和无形资产本期数,第19栏
  • 企业从应付职工工资中代扣的职工房租应借记什么科目
  • 短期流动负债计算公式
  • 企业产品研发
  • 建筑工程公司需要哪些资质证书
  • 机票价格分类
  • 出口退税的计算与流程
  • 现金收账凭证
  • 小规模纳税人变更一般纳税人条件
  • 公司电子发票报销
  • 采用账龄分析法计提坏账准备
  • mysql57解压缩安装教程
  • 深入Windows 第七版 第二部分
  • win8安全模式黑屏
  • linux中修改root密码
  • 盗版xp黑屏的解决办法
  • centos bbrplus
  • win7旗舰版怎么改成专业版
  • cocos2d schedule
  • jQuery插件实现静态HTML验证码校验
  • perl后门,正向和反向!实例代码
  • node.js使用方法
  • 批处理文件是将需要连续使用的可多次重复使用的
  • android设计模式总结
  • python中的条件判断和循环语句
  • python数据通信
  • 国家电子税务局云南省电子税务局
  • 光伏电站电力监控系统
  • 上海手撕发票多少钱一本
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设