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框架中DOMReady事件的实现小结
Feb 12 Javascript
jquery实现图片滚动效果的简单实例
Nov 23 Javascript
聊一聊JavaScript作用域和作用域链
May 03 Javascript
html5 canvas 详细使用教程
Jan 20 Javascript
Node.js 使用流实现读写同步边读边写功能
Sep 11 Javascript
微信小程序使用radio显示单选项功能【附源码下载】
Dec 11 Javascript
详解React项目的服务端渲染改造(koa2+webpack3.11)
Mar 19 Javascript
详解vue-loader在项目中是如何配置的
Jun 04 Javascript
bootstrap table合并行数据并居中对齐效果
Oct 17 Javascript
JS实现处理时间,年月日,星期的公共方法示例
May 31 Javascript
iSlider手机端图片滑动切换插件使用详解
Dec 24 Javascript
JavaScript代码模拟鼠标自动点击事件示例
Aug 07 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
用header 发送cookie的php代码
2007/03/16 PHP
php三维数组去重(示例代码)
2013/11/26 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
2016/09/11 PHP
PHP 断点续传实例详解
2017/11/11 PHP
浅谈php://filter的妙用
2019/03/05 PHP
javascript Xml增删改查(IE下)操作实现代码
2009/01/30 Javascript
吐槽一下我所了解的Node.js
2014/10/08 Javascript
详解javascript中的事件处理
2015/11/06 Javascript
JavaScript计算器网页版实现代码分享
2016/07/15 Javascript
Bootstrap实现带暂停功能的轮播组件(推荐)
2016/11/25 Javascript
JavaScript实现前端实时搜索功能
2020/03/26 Javascript
nodejs body-parser 解析post数据实例
2017/07/26 NodeJs
vue中的计算属性和侦听属性
2020/11/06 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
2020/11/19 Vue.js
[27:39]Ti4 循环赛第二日 LGD vs Fnatic
2014/07/11 DOTA
[01:14:30]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第二场 8.20.mp4
2019/08/22 DOTA
[01:00:11]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第一场 2月7日
2021/03/11 DOTA
简单使用Python自动生成文章
2014/12/25 Python
Python实现的多线程端口扫描工具分享
2015/01/21 Python
python中如何使用正则表达式的非贪婪模式示例
2017/10/09 Python
python字典的setdefault的巧妙用法
2019/08/07 Python
python opencv实现gif图片分解的示例代码
2019/12/13 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
2019/12/18 Python
Matlab中plot基本用法的具体使用
2020/07/17 Python
检测浏览器是否支持html5视频的代码
2013/03/28 HTML / CSS
德国孕妇装和婴童服装网上商店:bellybutton
2018/04/12 全球购物
环境科学专业大学生自荐信格式
2013/09/21 职场文书
捐书活动总结
2014/05/04 职场文书
五一口号
2014/06/19 职场文书
热情服务标语
2014/10/07 职场文书
运动会开幕词
2015/01/28 职场文书
放假通知
2015/04/14 职场文书
辩护意见书
2015/06/04 职场文书
导游词之镇江-金山寺
2019/10/14 职场文书
python实现腾讯滑块验证码识别
2021/04/27 Python
Python使用永中文档转换服务
2022/05/06 Python