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源码分析-05异步队列 Deferred 使用介绍
Nov 14 Javascript
关于JavaScript中的关联数组分析
Apr 09 Javascript
JS连连看源码完美注释版(推荐)
Dec 09 Javascript
javascript 获取函数形参个数
Jul 31 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
May 06 Javascript
深入浅析javascript立即执行函数
Oct 23 Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
Feb 22 Javascript
jQuery事件与动画基础详解
Feb 23 Javascript
使用 jQuery 实现表单验证功能
Jul 05 jQuery
Bootstrap 模态框自定义点击和关闭事件详解
Aug 10 Javascript
微信小程序图表插件wx-charts用法实例详解
May 20 Javascript
详解VUE中的插值( Interpolation)语法
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
re0第二季蕾姆被制作组打入冷宫!艾米莉亚女主扶正,原因唏嘘
2020/04/02 日漫
PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
2011/12/16 PHP
thinkphp5 模型实例化获得数据对象的教程
2019/10/18 PHP
解析javascript 浏览器关闭事件
2013/07/08 Javascript
javascript函数定义的几种区别小结
2014/01/06 Javascript
深入理解js中this的用法
2016/05/28 Javascript
JavaScript String(字符串)对象的简单实例(推荐)
2016/08/31 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
2016/11/04 Javascript
JavaScript中setTimeout的那些事儿
2016/11/14 Javascript
微信小程序 欢迎界面开发的实例详解
2016/11/30 Javascript
es7学习教程之fetch解决异步嵌套问题的方法示例
2017/07/21 Javascript
mui上拉加载更多下拉刷新数据的封装过程
2017/11/03 Javascript
vue跳转同一个组件,参数不同,页面接收值只接收一次的解决方法
2019/11/05 Javascript
vue transition 在子组件中失效的解决
2019/11/12 Javascript
Vue中函数防抖节流的理解及应用实现
2020/04/24 Javascript
python判断给定的字符串是否是有效日期的方法
2015/05/13 Python
详解Python 数据库 (sqlite3)应用
2016/12/07 Python
Python中的并发处理之asyncio包使用的详解
2018/04/03 Python
python实现烟花小程序
2019/01/30 Python
如何使用pyinstaller打包32位的exe程序
2019/05/26 Python
python如何解析配置文件并应用到项目中
2019/06/27 Python
python dataframe NaN处理方式
2019/12/26 Python
利用python实现后端写网页(flask框架)
2021/02/28 Python
html+css实现自定义图片上传按钮功能
2019/09/04 HTML / CSS
日本7net购物网:书籍、漫画、杂志、DVD、游戏邮购
2017/02/17 全球购物
本科生详细的自我评价
2013/09/19 职场文书
护士自荐信
2013/10/25 职场文书
计算机专业学生求职信分享
2013/12/15 职场文书
运动会领导邀请函
2014/01/10 职场文书
企业活动策划方案
2014/06/02 职场文书
学雷锋标语
2014/06/25 职场文书
酒后驾车标语
2014/06/30 职场文书
反对形式主义、官僚主义、享乐主义和奢靡之风整改措施
2014/09/17 职场文书
三严三实对照检查材料范文
2014/09/23 职场文书
2015年员工工作总结范文
2015/04/08 职场文书
2015年卫生院健康教育工作总结
2015/07/24 职场文书