javascript for循环设法提高性能

 更新时间:2010年02月24日 21:37:00   作者:  
让你的for循环提升性能的写法,需要的朋友可以参考下。
一般在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第一篇之实现按钮全选、功能

    JavaScript第一篇之实现按钮全选、功能

    这篇文章主要介绍了JavaScript第一篇之实现按钮全选、功能的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-08-08
  • 利用js实现Vue2.0中数据的双向绑定功能

    利用js实现Vue2.0中数据的双向绑定功能

    vue数据双向绑定是通过数据劫持结合发布者-订阅者模式的方式来实现的,下面这篇文章主要给大家介绍了关于如何利用js实现Vue2.0中数据的双向绑定功能的相关资料,需要的朋友可以参考下
    2021-07-07
  • JS实现1000以内被3或5整除的数字之和

    JS实现1000以内被3或5整除的数字之和

    今天在技术群里看到一道这样的提:求1000以内被3或5整除的数字之和。小编把我的解决办法分享到脚本之家平台,供大家参考
    2016-02-02
  • js数组的基本使用总结

    js数组的基本使用总结

    这篇文章主要给大家介绍了关于js数组的基本使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 监控用户是否关闭浏览器的js代码

    监控用户是否关闭浏览器的js代码

    BS系统一个非常烦人的地方是不知道用户什么时候关闭浏览器离开系统.这里,我们采用onbeforeunload参数监控用户是否关闭浏览器.
    2009-08-08
  • js中将具有数字属性名的对象转换为数组

    js中将具有数字属性名的对象转换为数组

    js中将具有数字属性名的对象转换为数组,虽然不太常用,但我们的确可以给对象添加以数字为属性名的属性
    2011-03-03
  • js文本框输入内容智能提示效果

    js文本框输入内容智能提示效果

    这篇文章主要介绍了js文本框输入内容智能提示效果,非常简单实用,需要的朋友可以参考下
    2015-12-12
  • 一个报数游戏js版(约瑟夫环问题)

    一个报数游戏js版(约瑟夫环问题)

    随便给一个数 比如100,那么从1到100围成一个圆圈,然后就类似123123报数一样逢3就舍掉,一直这样轮询 那么最后剩下来的那个数是多少?
    2010-08-08
  • 3分钟教你用JavaScript实现电子签名效果

    3分钟教你用JavaScript实现电子签名效果

    电子签名已经成为现代商业中不可或缺的一部分,它可以提高业务流程的效率和安全性。本文将介绍如何使用HTML5的canvas元素和JavaScript在前端实现电子签名,需要的可以参考一下
    2023-04-04
  • 表单元素事件 (Form Element Events)

    表单元素事件 (Form Element Events)

    表单元素事件 (Form Element Events)仅在表单元素中有效。
    2009-07-07

最新评论