javascript for循环设法提高性能


Posted in Javascript onFebruary 24, 2010

一般在javascript里对数组进行遍历一般是使用for循环,像下面一样

var arr = []; 
for(var i=0; i<arr.length; i++){ 
//loop 
}

这种代码最大的问题,就在于每次循环时都要通过 .操作符获取 .length,增加了开销。那么我们可以这样改进。
var arr = []; 
for(var i=0, n=arr.length; i<n; i++){ 
//loop 
}

这样子,先把 arr.length暂存到 n 变量中去。只在开始时获取一次。
但是这样就没问题了吗?貌似多定义了个无意义的变量 n 。好那继续改进
var arr = []; 
for(var i=arr.length-1; i > -1; i--){ 
//loop 
}

好这样子,我们把这个循环顺序倒过来,就把那个n去掉了,而使用了一个常量-1。
如果应用场景,允许不使用 for 循环的话。我们可在使用 while代替
善于使用这两种循环语句,以提高javascript的效率。
var arr = []; 
var i=arr.length-1; 
while(i--){ 
//loop arr[i] 
}

或者
var arr = []; 
var i=arr.length-1; 
do { 
// loop arr[i] 
}while(--i)

这样代码更简洁,效率更好,特别是如果允许先执行一次循环体的情况下,使用do while效果很明显。
唯一的问题是把 i 移到循环外了。
Javascript 相关文章推荐
游戏人文件夹程序 ver 3.0
Jul 14 Javascript
JavaScript 三种创建对象的方法
Oct 16 Javascript
在js文件中如何获取basePath处理js路径问题
Jul 10 Javascript
jQuery实现div浮动层跟随页面滚动效果
Feb 11 Javascript
a标签click和href执行顺序探讨
Jun 23 Javascript
使用jQuery实现更改默认alert框体
Apr 13 Javascript
javascript解析xml实现省市县三级联动的方法
Jul 25 Javascript
jQuery序列化表单成对象的简单实现
Nov 29 Javascript
JQuery学习总结【一】
Dec 01 Javascript
js学习总结之DOM2兼容处理重复问题的解决方法
Jul 27 Javascript
利用Angular2 + Ionic3开发IOS应用实例教程
Jan 15 Javascript
vue项目中跳转到外部链接的实例讲解
Sep 20 Javascript
判断控件是否已加载完成的代码
Feb 24 #Javascript
json-lib出现There is a cycle in the hierarchy解决办法
Feb 24 #Javascript
ext combox 下拉框不出现自动提示,自动选中的解决方法
Feb 24 #Javascript
javascript Firefox与IE 替换节点的方法
Feb 24 #Javascript
jQuery 性能优化手册 推荐
Feb 23 #Javascript
jquery实现的超出屏幕时把固定层变为定位层的代码
Feb 23 #Javascript
JSON 学习之JSON in JavaScript详细使用说明
Feb 23 #Javascript
You might like
帅气的琦玉老师
2020/03/02 日漫
smarty模板引擎从配置文件中获取数据的方法
2015/01/22 PHP
PHP中trim()函数简单使用指南
2015/04/16 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
2016/03/22 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
2018/05/29 PHP
laravel-admin的多级联动方法
2019/09/30 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
javascript学习笔记(十七) 检测浏览器插件代码
2012/06/20 Javascript
Javascript学习笔记之 函数篇(二) : this 的工作机制
2014/06/24 Javascript
js变形金刚文字特效代码分享
2015/08/20 Javascript
JavaScript文档碎片操作实例分析
2015/12/12 Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
2016/07/27 Javascript
基于jquery实现五星好评
2017/11/18 jQuery
JS如何把字符串转换成json
2020/02/21 Javascript
Vue2.4+新增属性.sync、$attrs、$listeners的具体使用
2020/03/08 Javascript
[42:20]2014 DOTA2华西杯精英邀请赛5 24 DK VS NewBee
2014/05/25 DOTA
[37:23]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第二局
2016/03/04 DOTA
Python Web开发模板引擎优缺点总结
2014/05/06 Python
python实现从一组颜色中找出与给定颜色最接近颜色的方法
2015/03/19 Python
python列表的常用操作方法小结
2016/05/21 Python
Python模拟随机游走图形效果示例
2018/02/06 Python
详解Python最长公共子串和最长公共子序列的实现
2018/07/07 Python
python版飞机大战代码分享
2018/11/20 Python
Python实现代码统计工具
2019/09/19 Python
Python class的继承方法代码实例
2020/02/14 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
2021/01/27 Python
美国领先的汽车轮胎和轮毂供应商:TireBuyer
2016/07/21 全球购物
奥斯汀独木舟和皮划艇:Austin Canoe & Kayak
2018/05/22 全球购物
本科毕业生自我鉴定
2013/11/02 职场文书
大学生联谊活动策划书(光棍节)
2014/10/10 职场文书
绍兴鲁迅故居导游词
2015/02/09 职场文书
研究生导师推荐信
2015/03/25 职场文书
给朋友的道歉短信
2015/05/12 职场文书
教师专业技术工作总结2015
2015/05/13 职场文书
CSS实现五种常用的2D转换
2021/12/06 HTML / CSS
Python安装使用Scrapy框架
2022/04/12 Python