谈for、while、do-while、for-in循环性能

for循环我们经常用,它的性能方面我们又了解多少呢!以下是我看书总结的,供大家参考。

在大多数编程语言中,代码执行时间大部分消耗在循环中。循环处理是最常见的编程模式之一,也是提升性能必须关注的要点之一。理解JS中循环对性能的影响至关重要,以为死循环或长时间运行的循环会严重影响用户体验。

for循环

四部分组成:初始化、前提条件、后执行体、循环体。

当代码遇到for循环时,先运行初始化代码,然后进入前提条件。如果前提条件的结果是true,则运行循环体。循环体执行完后,后执行代码开始运行。for循环直观的代码封装格式被开发者们所喜欢。

for(var i=0;i<10,i++){
    //循环主体
}

while循环 

是最简单的前构成:测循环,由一个前测条件和一个循环体 构成

var i=0;
while(i<10){
    //循环主体
    i++
}    

do-while循环

是js中唯一一种后测循环,它由两部分组成,循环体和后测条件:

var i=0;
do{
    //循环主体

}while(i++ <10)

for-in

该循环有个非常特别的用途“它可以枚举任意对象的属性名。基本格式如下:

for(var in obj){
    //循环主体
}

循环性能

fon-in循环比其他几种明显要慢:

由于每次迭代操作会同时搜索实例和原型属性,for-in循环的每次迭代都会产生跟多的开销,所以比其他循环类型要慢。对比相同迭代次数的循环,for-in循环最终只有其他类型速度的 1/7。因此,除非你明确需要迭代一个属性未知的对象,否则应避免使用for-in循环。

注意:不要使用for-in来遍历数组成员。

除for-in循环外,其他类型的性能 都差不多,深究哪种循环最快没有什么意义。(不包含for-each和map)

倒序循环是编程语言中一种通用的性能优化方法,但一般来说不是那么容易理解,运行速度比原始快了50%-60%。

for(var i=item.length;i--){

}

var j=items.length
while(j--){

}

var k=item.length-1

do{

}while(i--)

猜你喜欢

转载自blog.csdn.net/lbPro0412/article/details/81840981