现在的位置: 首页 > 综合 > 正文

算法和流程控制

2013年02月21日 ⁄ 综合 ⁄ 共 1037字 ⁄ 字号 评论关闭
     1.循环

     
     大多数编程语言来说,代码执行时间大部分消耗在循环中循环处理一系列事情是常见的模式之一,因此也是提升性能最重要的一点之一,理解javascript循环对性能的影响至关重要,死循环或长期运行循环会严重用户体验。

     循环类型
     
     ECMA第三版定义了javascript的基本语法和行为,其中有四种类型的循环。第一种是for循环与c语言语法相同:
     
     for(var i =0 ;i<10;i++){
          //do some thing
     }
     
     for循环是常用的循环结构。他有四部分组成:初始化、前侧条件、后执行体、循环体、当代码运行到for循环时,先运行初始化代码,然后进入前侧条件。如果为true,则运行循环体。循环体执行完后,后执行代码开始运行,for循环的清晰明确的代码风格被开发者们所喜爱。
     
     注意:for循环中初始化var语句会创建一个函数级变量,而不是循环级的。由于javascript只有函数级作用域,因此在for循环中定义一个新变量等同于在循环体外定义了一个变量。
     
     第二种循环是while循环,一个前置条件如果为true,则开始循环,否则退出循环。
     
     第三种循环是do-while循环,这个唯一一个后置条件的循环,所以代码至少运行一次。
     
     第四种循环是类型是for-in 这个循环比较特殊他可以枚举出对象的所用属性名。当然属性名必须是可枚举的
     
     当变量完成才返回,所以返回的属性包括对象事例属性以及从原型链中继承而来的属性。
     
     循环性能
     
     要说循环性能,for-in性能最差因为他每次操作都要搜索事例或原型中的属性所以他会产生更多的性能开销,因此比其他循环类型要慢。对比相同迭代次数的循环,for-in最终只有其他类型速度的1/7左右,除非你遍历一个属性数量未知的对象,否则避免使用for-in循环,如果你遍历一个属性已知属性列表,使用其他类型的循环会更快。
     
     注意:不要用for-in 遍历数组成员
     
     除了for-in外其他类型的循环都差不多,至于选择什么类型根据需求而定而不是性能。
     如果循环类型与性能无关,那该如何选择呢?
     
     1.每次迭代处理的事务
     2.迭代的次数
     
     通过减少这两个中的一个,你就能对循环的整体性能产生积极的影响。
     
     减少迭代的工作量
     
     

抱歉!评论已关闭.