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 相关文章推荐
JS 巧妙获取剪贴板数据 Excel数据的粘贴
Jul 09 Javascript
用Javascript实现锚点(Anchor)间平滑跳转
Sep 08 Javascript
自制轻量级仿jQuery.boxy对话框插件代码
Oct 26 Javascript
jQuery qrcode生成二维码的方法
Apr 03 Javascript
js智能获取浏览器版本UA信息的方法
Aug 08 Javascript
详解vue2 $watch要注意的问题
Sep 08 Javascript
jquery-file-upload 文件上传带进度条效果
Nov 21 jQuery
Layui Form 自定义验证的实例代码
Sep 14 Javascript
vue中 数字相加为字串转化为数值的例子
Nov 07 Javascript
JS实现表单中点击小眼睛显示隐藏密码框中的密码
Apr 13 Javascript
uniapp与webview之间的相互传值的实现
Jun 29 Javascript
jQuery实现雪花飘落效果
Aug 02 jQuery
判断控件是否已加载完成的代码
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/08/02 PHP
php抽奖小程序的实现代码
2013/06/18 PHP
PHP二维数组去重算法
2016/12/17 PHP
jquery ajax方式直接提交整个表单核心代码
2013/08/15 Javascript
js 跳出页面的frameset框架示例介绍
2013/12/23 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
2014/06/30 Javascript
jQuery实现列表自动滚动循环滚动展示新闻
2014/08/22 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
2016/05/24 Javascript
JS与Ajax Get和Post在使用上的区别实例详解
2016/06/08 Javascript
使用开源工具制作网页验证码的方法
2016/10/17 Javascript
bootstrap-datetimepicker实现只显示到日期的方法
2016/11/25 Javascript
BootStrap Select清除选中的状态恢复默认状态
2017/06/20 Javascript
微信小程序数据存储与取值详解
2018/01/30 Javascript
详解ES6 Promise的生命周期和创建
2019/08/18 Javascript
nodejs制作小爬虫功能示例
2020/02/24 NodeJs
[01:31]DOTA2上海特级锦标赛 SECRET战队完整宣传片
2016/03/16 DOTA
python在windows命令行下输出彩色文字的方法
2015/03/19 Python
使用Python的urllib和urllib2模块制作爬虫的实例教程
2016/01/20 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
2016/06/27 Python
python正则表达式re之compile函数解析
2017/10/25 Python
Python爬虫_城市公交、地铁站点和线路数据采集实例
2018/01/10 Python
pycharm下查看python的变量类型和变量内容的方法
2018/06/26 Python
Python魔法方法 容器部方法详解
2020/01/02 Python
关于python pycharm中输出的内容不全的解决办法
2020/01/10 Python
TensorFlow设置日志级别的几种方式小结
2020/02/04 Python
深入了解Python装饰器的高级用法
2020/08/13 Python
你正在寻找的CSS3 动画技术
2011/07/27 HTML / CSS
机电一体化应届生求职信范文
2014/01/24 职场文书
加入学生会演讲稿
2014/04/24 职场文书
泸县召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
孔庙导游词
2015/02/04 职场文书
同学毕业留言寄语
2015/02/27 职场文书
环卫处个人工作总结
2015/03/04 职场文书
人事聘任通知
2015/04/21 职场文书
2015年幼儿园班主任个人工作总结
2015/10/22 职场文书
Spring Cloud 中@FeignClient注解中的contextId属性详解
2021/09/25 Java/Android