算法和流程控制
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.迭代的次数
通过减少这两个中的一个,你就能对循环的整体性能产生积极的影响。
减少迭代的工作量
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架