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插件制作 提示框插件实现代码
Aug 17 Javascript
js模拟点击事件实现代码
Nov 06 Javascript
js与C#进行时间戳转换
Nov 14 Javascript
javascript实现按回车键切换焦点
Feb 09 Javascript
jQuery弹出窗口打开链接的实现代码
Dec 24 Javascript
js中setTimeout的妙用--防止循环超时
Mar 06 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
May 28 Javascript
JQuery EasyUI 结合ztrIee的后台页面开发实例
Sep 01 jQuery
Vue二次封装axios为插件使用详解
May 21 Javascript
基于JavaScript获取base64图片大小
Oct 18 Javascript
手把手教您实现react异步加载高阶组件
Apr 07 Javascript
vue中this.$http.post()跨域和请求参数丢失的解决
Apr 08 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
php实现两表合并成新表并且有序排列的方法
2014/12/05 PHP
微信API接口大全
2015/04/15 PHP
CLASS_CONFUSION JS混淆 全源码
2007/12/12 Javascript
javascript与CSS复习(二)
2010/06/29 Javascript
js读写(删除)Cookie实例详解
2013/04/17 Javascript
javascript中var的重要性分析
2015/02/11 Javascript
JS+CSS实现带有碰撞缓冲效果的竖向导航条代码
2015/09/15 Javascript
js 截取或者替换字符串中的数字实现方法
2016/06/13 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
2016/06/22 Javascript
javascript 将共享属性迁移到原型中去的实现方法
2016/08/31 Javascript
详解AngularJS中ng-src指令的使用
2016/09/07 Javascript
详解用vue.js和laravel实现微信支付
2017/06/23 Javascript
微信小程序简单的canvas裁剪图片功能详解
2019/07/12 Javascript
es6中比较有用的7个技巧小结
2019/07/12 Javascript
Angular8基础应用之表单及其验证
2019/08/11 Javascript
JavaScript HTML DOM 元素 (节点)新增,编辑,删除操作实例分析
2020/03/02 Javascript
JS判断数组四种实现方法详解
2020/06/29 Javascript
Node.js 深度调试方法解析
2020/07/28 Javascript
Openlayers实现点闪烁扩散效果
2020/09/24 Javascript
[06:38]DOTA2怒掀电竞风暴 2013Chinajoy
2013/07/27 DOTA
在Python中用keys()方法返回字典键的教程
2015/05/21 Python
pygame实现五子棋游戏
2019/10/29 Python
基于python-pptx库中文文档及使用详解
2020/02/14 Python
Scrapy模拟登录赶集网的实现代码
2020/07/07 Python
CSS3新属性transition-property transform box-shadow实例学习
2013/06/06 HTML / CSS
CSS类名支持中文命名的示例
2014/04/04 HTML / CSS
国际性能运动服装品牌:Dare 2b
2018/07/27 全球购物
什么是唯一索引
2015/07/05 面试题
大学生新闻专业个人自我评价
2013/11/12 职场文书
项目资料员岗位职责
2013/12/10 职场文书
四年大学生活的个人自我评价
2013/12/11 职场文书
2014银行授权委托书样本
2014/10/04 职场文书
2015年后勤工作总结范文
2015/04/08 职场文书
2015年员工试用期工作总结
2015/05/28 职场文书
2016年会领导致辞稿
2015/07/29 职场文书
Python 数据可视化神器Pyecharts绘制图像练习
2022/02/28 Python