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 相关文章推荐
北京奥运官方网站幻灯切换效果flash版打包下载
Jan 30 Javascript
基于jquery的自定义鼠标提示效果 jquery.toolTip
Nov 14 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
Dec 25 Javascript
JSF中confirm弹出框的用法示例介绍
Jan 07 Javascript
Jquery跨域获得Json的简单实例
May 18 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
Jan 19 Javascript
Vue.js开发环境快速搭建教程
Mar 17 Javascript
详解vue.js的devtools安装
May 26 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
Oct 16 Javascript
element-ui表格合并span-method的实现方法
May 21 Javascript
微信小程序上传图片到php服务器的方法
May 23 Javascript
如何搭建一个完整的Vue3.0+ts的项目步骤
Oct 18 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
SONY ICF-SW7600的电路分析
2021/03/02 无线电
一个可查询所有表的“通用”查询分页类
2006/10/09 PHP
JavaScript性能优化 创建文档碎片(document.createDocumentFragment)
2010/07/13 Javascript
jquery应该如何来设置改变按钮input的onclick事件
2012/12/10 Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
2015/02/28 Javascript
JavaScript实现在页面间传值的方法
2015/04/07 Javascript
浅析jQuery操作select控件的取值和设值
2016/12/07 Javascript
JS实现常见的查找、排序、去重算法示例
2018/05/21 Javascript
一文搞懂ES6中的Map和Set
2019/05/20 Javascript
JS+DIV实现拖动效果
2020/02/11 Javascript
Javascript基于OOP实实现探测器功能代码实例
2020/08/26 Javascript
python文件操作整理汇总
2014/10/21 Python
Python之父谈Python的未来形式
2016/07/01 Python
Python列表推导式与生成器用法分析
2018/08/02 Python
解决Python下json.loads()中文字符出错的问题
2018/12/19 Python
详解Python3 对象组合zip()和回退方式*zip
2019/05/15 Python
python3 线性回归验证方法
2019/07/09 Python
python pillow模块使用方法详解
2019/08/30 Python
Python加密模块的hashlib,hmac模块使用解析
2020/01/02 Python
tensorflow使用指定gpu的方法
2020/02/04 Python
python实现简单井字棋游戏
2020/03/04 Python
CSS3实现缺角矩形,折角矩形以及缺角边框
2019/12/20 HTML / CSS
Sneaker Studio波兰:购买运动鞋
2018/04/28 全球购物
德国家具、照明、家居用品网上商店:Wayfair.de
2020/02/13 全球购物
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
用Java语言将一个键盘输入的数字转化成中文输出
2013/01/25 面试题
同步和异步有何异同,在什么情况下分别使用他们
2013/04/09 面试题
公司薪酬管理制度
2014/01/31 职场文书
售前工程师职业生涯规划
2014/03/02 职场文书
保护环境建议书400字
2014/05/13 职场文书
2014教师年度思想工作总结
2014/11/10 职场文书
2015年“七七卢沟桥事变”纪念活动总结
2015/03/24 职场文书
什么是创业计划书?什么是商业计划书?这里一一解答
2019/07/12 职场文书
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL
Redis实现订单自动过期功能的示例代码
2021/05/08 Redis
分享几种python 变量合并方法
2022/03/20 Python