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 相关文章推荐
javascript 在网页中的运用(asp.net)
Nov 23 Javascript
jquery 插件学习(六)
Aug 06 Javascript
javascript动态加载二
Aug 22 Javascript
Boostrap入门准备之border box
May 09 Javascript
javascript ASCII和Hex互转的实现方法
Dec 27 Javascript
详解JS数组Reduce()方法详解及高级技巧
Aug 18 Javascript
使用javaScript实现鼠标拖拽事件
Apr 03 Javascript
JS遍历DOM文档树的方法实例详解
Apr 03 Javascript
vue动画效果实现方法示例
Mar 18 Javascript
jquery将信息遍历到界面上实例代码
Jan 21 jQuery
在react项目中使用antd的form组件,动态设置input框的值
Oct 24 Javascript
vue-element-admin项目导入和导出的实现
May 21 Vue.js
判断控件是否已加载完成的代码
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/08 国漫
ThinkPHP登录功能的实现方法
2014/08/20 PHP
php+mysql结合Ajax实现点赞功能完整实例
2015/01/30 PHP
php文件类型MIME对照表(比较全)
2016/10/07 PHP
JavaScript 直接操作本地文件的实现代码
2009/12/01 Javascript
javascript的原生方法获取数组中的最大(最小)值
2012/12/19 Javascript
jquery监听div内容的变化具体实现思路
2013/11/04 Javascript
jquery.cookie用法详细解析
2013/12/18 Javascript
javascript处理a标签超链接默认事件的方法
2015/06/29 Javascript
javascript数组克隆简单实现方法
2015/12/16 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
2016/09/15 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
jQuery validate 验证radio实例
2017/03/01 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
详解微信小程序调起键盘性能优化
2018/07/24 Javascript
axios 封装上传文件的请求方法
2018/09/26 Javascript
微信小程序自定义波浪组件使用方法详解
2019/09/21 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
2019/11/07 jQuery
JavaScript实现移动端弹窗后禁止滚动
2020/05/25 Javascript
[00:02]DOTA2新版本使用PA至宝后暴击展示
2014/11/19 DOTA
使用Python中的线程进行网络编程的入门教程
2015/04/15 Python
Python基于socket实现简单的即时通讯功能示例
2018/01/16 Python
答题辅助python代码实现
2018/01/16 Python
python实现随机调用一个浏览器打开网页
2018/04/21 Python
对python中的pop函数和append函数详解
2018/05/04 Python
PyCharm中配置PySide2的图文教程
2020/06/18 Python
PyCharm上安装Package的实现(以pandas为例)
2020/09/18 Python
python获得命令行输入的参数的两种方式
2020/11/02 Python
基于css3 animate制作绚丽的动画效果
2015/11/24 HTML / CSS
微型企业创业投资计划书
2014/01/10 职场文书
校园安全教育广播稿
2014/02/17 职场文书
班级读书活动总结
2014/06/30 职场文书
学校领导四风问题整改措施思想汇报
2014/10/09 职场文书
小学教师先进事迹材料
2014/12/15 职场文书
《走遍天下书为侣》教学反思
2016/02/22 职场文书