热门:网页模板.net视频教程JQueryMVCjsonExtJs源码示例三级联动JQuery菜单
您现在的位置:.Net中文社区>> .Net编程>>正文内容

for循环的小收获

发布时间:2011年01月04日点击数: 佚名

刚看了一篇文章《Rethinking JavaScript for-loops》,有点小收获。

我们常常这么写一个for循环:

  1. for(var i=0; i<arr.length; i++) { 
  2.     var each = arr[i]; 
  3.     //do something 

一个简单的改进是将arr.length存储起来,这样可以减少对象属性的反复读取:

  1. for(var i=0,l=arr.length; i<l; i++) { 
  2.     var each = arr[i]; 
  3.     //do something 

还可以将递增改为递减,当i递减到0时便可以触发循环的退出条件,这样就减少了一次运算(并没有减少)。像下面这样:

  1. for (var i=arr.length; i––;) { 
  2.     var each = arr[i]; 
  3.     //do something 

这样循环造成的运算就只剩下一次了。

另外,如果能保证你的数组中没有0、false、null、”"这样的值,可以通过arr[arr.length+1]为undefined来退出循环:

  1. for (var i=0, each; each = arr[i]; i++) { 
  2.     //do something 

甚至是:

  1. for (var i=0, each; each = arr[i++];) { 
  2.     //do something 

当然,由于variable hoisting的存在,尽量不要把var放在for()语句中。

  1. var i; 
  2. for (i=arr.length; i–– && each = arr[i];) { 
  3.     //do something 

-- Return null --

本站热点业务

更多模板/案例展示

关于我们 | 联系我们 | 团队日志 | 网站地图 | 网站合作