西红柿爱番茄

Feed Rss

javascript循环的优化

12.16.2009, Javascript, 性能优化, by .

在编写javascript的时候,循环是我们经常会进行的操作,尽管目前编写循环的方式多种多样,但是在性能方面还是有区别的,下面我们来看看都有那些循环方式。

第一种:普通的方式,这种方式的性能是比较差的,因为在每次循环的时候都需要计算数组的length一次,在javascript的数组操作中,对length属性的操作的性能是比较慢的,所以尽量在循环内避免使用过多的length操作,包括shift,unshift,pop等等。
[javascript]
//假如arr是一个很大的数组
for(var i=0;i<arr.length;i++){
….
}
[/javascript]
第二种:缓存数组的length属性,这中方式优化了不少性能,通过一个变量来缓存数组的length,这样每次循环就不需要重复计算数组的length值了。
[javascript]
for(var i=0,l=arr.length;i<l;i++){
….
}
[/javascript]

第三种:for循环的一种另类方式,这种方式同下面将要讲解的while的方式也都对上面的两种方式优化了:不但获取了数组的每一项,同时将它作为判断条件,减少了中间的一些操作。不过这两种方式都有同一个缺点:当数组项中有假值(false,null,”,”",undefined等等)的时候,就会断开循环。
[javascript]
for(var i=0,c;c=arr[i++];){
//操作当前数组项c….
}
[/javascript]
[javascript]
var i=0,c;
while(c=arr[i++]){
//操作当前数组项c….
}
[/javascript]
上面介绍的几种循环方式各有所用,都应该视情况来选择不同的方式,第二种方式是比较普遍流行的方式,在一些特定场合,还是可以尝试使用效率更高的第三种方式的。:)

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>