JS编程建议——29:准确使用循环体(1)

简介: 29:准确使用循环体(1)

建议29:准确使用循环体(1)
1.选择正确的循环体
在大多数编程语言中,代码执行时间多数消耗在循环的执行上。在一系列编程模式中,循环是最常用的模式之一,因此也是提高性能必须关注的地方之一。理解JavaScript 中循环对性能的影响至关重要,因为死循环或长时间运行的循环会严重影响用户体验。JavaScript定义了4种类型的循环:
第一种循环是标准的for循环,与C语言使用同样的语法:

  1. for (var i=0; i < 10; i++){
  2. //循环体
  3. }
    for循环是最常用的循环结构,它由4部分组成:初始化体、前测条件、后执行体、循环体。当遇到一个for循环时,初始化体首先执行,然后进入前测条件。如果前测条件的计算结果为true,则执行循环体,然后运行后执行体。for循环在封装上的直接性是开发者喜欢使用它的原因之一。

第二种循环是while循环。while 循环是一个简单的前测循环,由一个前测条件和一个循环体构成:

  1. var i = 0;
  2. while(i < 10){
  3. //循环体
  4. i++;
  5. }
    在执行循环体之前,先对前测条件进行计算。如果计算结果为true,那么就执行循环体;否则将跳过循环体。任何for 循环都可以写成while 循环,反之亦然。

第三种循环是do while循环。do while 循环是JavaScript中唯一一种后测试的循环,它包括两部分:循环体和后测条件。

  1. var i = 0;
  2. do {
  3. //循环体
  4. } while (i++ < 10);
    在一个do while 循环中,循环体至少运行一次,后测条件决定循环体是否应再次执行。

第四种循环是for in 循环。此循环有一个非常特殊的用途:可以枚举任何对象的命名属性。

  1. for (var prop in object){
  2. //循环体
  3. }
    每次执行循环,属性都被对象属性的名字(一个字符串)填充,直到所有的对象属性遍历完成才返回。返回的属性包括对象的实例属性和对象从原型链继承而来的属性。

提高循环性能的起点是选用哪种循环。在JavaScript 提供的4种循环类型中,只有for in循环执行速度比其他循环明显要慢。
由于每次迭代操作要搜索实例或原型的属性,for in循环每次迭代都要付出更多开销,因此它比其他类型循环执行速度慢一些。在同样的循环迭代操作中,其他类型循环执行速度比for in 循环快7 倍之多,因此推荐这样做:除非需要对数目不详的对象属性进行操作,否则避免使用for in循环。例如,迭代遍历一个有限的、已知的属性列表,使用其他循环类型更快,具体的使用模式如下:

  1. var props = ["prop1", "prop2"],
  2. i = 0;
  3. while (i < props.length){
  4. process(object[props[i]]);
  5. }
    此代码创建一个由成员和属性名构成的队列。while 循环用于遍历这几个属性并处理所对应的对象成员,而不是遍历对象的每个属性。此代码只关注感兴趣的属性,节约了循环时间。
相关文章
|
8月前
|
JavaScript 前端开发 Java
JavaScript:编程宇宙的多面闪耀之星-揭秘 JavaScript,编程界的全能霸主如何炼成?-优雅草卓伊凡
JavaScript:编程宇宙的多面闪耀之星-揭秘 JavaScript,编程界的全能霸主如何炼成?-优雅草卓伊凡
232 24
JavaScript:编程宇宙的多面闪耀之星-揭秘 JavaScript,编程界的全能霸主如何炼成?-优雅草卓伊凡
|
存储 JavaScript 前端开发
JavaScript编程实现tab选项卡切换的效果+1
JavaScript编程实现tab选项卡切换的效果+1
|
9月前
|
JavaScript Ubuntu Linux
如何在阿里云的linux上搭建Node.js编程环境?
本指南介绍如何在阿里云Linux服务器(Ubuntu/CentOS)上搭建Node.js环境,包含两种安装方式:包管理器快速安装和NVM多版本管理。同时覆盖全局npm工具配置、应用部署示例(如Express服务)、PM2持久化运行、阿里云安全组设置及外部访问验证等步骤,助你完成开发与生产环境的搭建。
|
10月前
|
JavaScript 前端开发 IDE
【编程向导】Js与Ts差异详解:选择与权衡
JavaScript 一直是 Web 开发的基石,以其灵活性和动态性著称,但其松散类型可能导致大型项目中出现难以调试的错误。TypeScript 作为 JavaScript 的超集,通过引入静态类型系统,提供了更高的类型安全性和更好的工具支持,尤其适合大型团队和复杂项目。本文详细对比了 JavaScript 和 TypeScript 的优缺点,并提供了实际代码示例,帮助开发者根据项目需求选择合适的工具。
1256 2
|
前端开发 JavaScript 持续交付
提高JavaScript编程效率
提高JavaScript编程效率
154 3
|
自然语言处理 JavaScript 前端开发
JavaScript闭包:解锁编程潜能,释放你的创造力
【10月更文挑战第25天】本文深入探讨了JavaScript中的闭包,包括其基本概念、创建方法和实践应用。闭包允许函数访问其定义时的作用域链,常用于数据封装、函数柯里化和模块化编程。文章还提供了闭包的最佳实践,帮助读者更好地理解和使用这一强大特性。
108 2
|
JavaScript 前端开发
JavaScript编程实现tab选项卡切换的效果
JavaScript编程实现tab选项卡切换的效果
|
JavaScript 前端开发 数据处理
掌握JavaScript中的二进制运算,提升你的编程技能!
掌握JavaScript中的二进制运算,提升你的编程技能!
|
存储 前端开发 JavaScript
深入理解 JavaScript 函数:提升编程技能的必备知识(下)
深入理解 JavaScript 函数:提升编程技能的必备知识(下)
深入理解 JavaScript 函数:提升编程技能的必备知识(下)
|
存储 前端开发 JavaScript
深入理解 JavaScript 函数:提升编程技能的必备知识(中)
深入理解 JavaScript 函数:提升编程技能的必备知识(中)
深入理解 JavaScript 函数:提升编程技能的必备知识(中)