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 相关文章推荐
Jquery常用技巧收集整理篇
Nov 14 Javascript
Javascript 静态页面实现随机显示广告的办法
Nov 17 Javascript
javascript字符串循环匹配实例分析
Jul 17 Javascript
jQuery实现的自适应焦点图效果完整实例
Aug 24 Javascript
利用VUE框架,实现列表分页功能示例代码
Jan 12 Javascript
thinkphp标签实现bootsrtap轮播carousel实例代码
Feb 19 Javascript
使用3D引擎threeJS实现星空粒子移动效果
Sep 13 Javascript
js图片无缝滚动插件使用详解
May 26 Javascript
layui固定下拉框的显示条数(有滚动条)的方法
Sep 10 Javascript
vue 导航内容设置选中状态样式的例子
Nov 01 Javascript
Vue获取微博授权URL代码实例
Nov 04 Javascript
javascript实现简单留言板案例
Feb 09 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
php模板中出现空行解决方法
2011/03/08 PHP
php while循环得到循环次数
2013/10/26 PHP
PHP中的Session对象如何使用
2015/09/25 PHP
Laravel框架Blade模板简介及模板继承用法分析
2019/12/03 PHP
var与Javascript变量隐式声明
2009/09/17 Javascript
jquery表单对象属性过滤选择器实例分析
2015/05/18 Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
2015/09/14 Javascript
JavaScript仿flash遮罩动画效果
2016/06/15 Javascript
JavaScript中关键字 in 的使用方法详解
2016/10/17 Javascript
用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)
2017/05/17 Javascript
ionic2中使用自动生成器的方法
2018/03/04 Javascript
vue2.0 资源文件assets和static的区别详解
2018/04/08 Javascript
关于Vue在ie10下空白页的debug小结
2018/05/02 Javascript
写gulp遇到的ES6问题详解
2018/12/03 Javascript
详解vue 图片上传功能
2019/04/30 Javascript
详解React 元素渲染
2020/07/07 Javascript
python实现socket端口重定向示例
2014/02/10 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
2018/01/10 Python
使用python编写监听端
2018/04/12 Python
python读取txt文件并取其某一列数据的示例
2019/02/19 Python
浅谈Python类中的self到底是干啥的
2019/11/11 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
重写django的model下的objects模型管理器方式
2020/05/15 Python
django 解决自定义序列化返回处理数据为null的问题
2020/05/20 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
2020/06/06 Python
举例讲解Python装饰器
2020/12/24 Python
html5 canvas移动浏览器上实现图片压缩上传
2016/03/11 HTML / CSS
Linux文件操作命令都有哪些
2016/07/23 面试题
创业计划书——互联网商机
2014/01/12 职场文书
优秀毕业生推荐信范文
2014/03/07 职场文书
超市中秋节促销方案
2014/03/21 职场文书
乡镇党委书记个人整改措施
2014/09/15 职场文书
标准离婚协议书(2014版)
2014/10/05 职场文书
给校长的建议书作文400字
2015/09/14 职场文书
实体类或对象序列化时,忽略为空属性的操作
2021/06/30 Java/Android
MySQL Server 层四个日志
2022/03/31 MySQL