在编写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]
上面介绍的几种循环方式各有所用,都应该视情况来选择不同的方式,第二种方式是比较普遍流行的方式,在一些特定场合,还是可以尝试使用效率更高的第三种方式的。:)