15 JavaScript学习:循环

news2024/11/27 2:29:02

JavaScript循环语句概念和分类

在这里插入图片描述

JavaScript中的循环语句用于重复执行特定的代码块,直到指定的条件不再满足。下面是JavaScript中常用的循环语句以及它们的概念和分类:

  1. for 循环:for循环通过指定起始条件、循环条件和递增/递减步长来进行迭代。它适用于已知迭代次数的情况。

    for (let i = 0; i < 5; i++) {
        // 执行代码块
    }
    
  2. while 循环:while循环在每次迭代之前检查循环条件。只有当条件为真时,循环体内的代码才会执行。它适用于不确定迭代次数的情况。

    while (condition) {
        // 执行代码块
    }
    
  3. do…while 循环:与while循环类似,不同之处在于do…while循环会先执行一次代码块,然后再检查循环条件是否满足。它确保循环体内的代码至少被执行一次。

    do {
        // 执行代码块
    } while (condition);
    
  4. for…in 循环:for…in循环用于遍历对象的可枚举属性,对数组来说也可以使用,但不推荐。

    for (let key in object) {
        // 执行代码块
    }
    
  5. for…of 循环:for…of循环用于遍历可迭代对象(如数组、字符串、Map、Set等)的元素。

    for (let element of iterable) {
        // 执行代码块
    }
    

循环语句的选择取决于具体的需求和情况。通常来说,for循环适用于已知迭代次数的情况,while和do…while适用于不确定迭代次数的情况,而for…in和for…of适用于遍历集合或对象的情况。

while循环

在这里插入图片描述

在JavaScript中,while循环是一种常用的循环语句,适用于当条件为真时重复执行代码块。while循环的结构如下:

while (condition) {
    // 执行代码块
}
  • 首先,判断condition是否为真(即条件是否满足)。
  • 如果条件为真,则执行循环体内的代码块。
  • 执行完毕后再次检查条件,如果仍然为真,则继续重复以上步骤直至条件为假。

以下是一个简单的示例,展示了如何使用while循环来计算1到5的和:

let sum = 0;
let i = 1;

while (i <= 5) {
    sum += i;
    i++;
}

console.log(sum); // 输出:15

在这个示例中,我们初始化变量sum为0,变量i为1。然后通过while循环,每次迭代将i加到sum中,并递增i,直到i超过5时循环结束。最终输出的结果为1到5的和为15。

需要注意的是,在使用while循环时需要小心避免无限循环,即条件永远为真导致循环无法停止。确保在循环体内有递增或递减的步骤,以让条件在某个时刻变为假。

do…while循环

do...while 循环是 JavaScript 中的另一种常见循环语句,它与 while 循环类似,但有一个关键区别:do...while 循环会先执行一次代码块,然后再检查循环条件是否满足。这确保了循环体内的代码至少被执行一次。do...while 循环的结构如下:

do {
    // 执行代码块
} while (condition);
  • 首先,执行循环体内的代码块。
  • 执行完毕后,检查 condition 是否为真。
  • 如果条件为真,则继续重复执行循环体内的代码块。
  • 如果条件为假,则循环结束。

以下是一个简单的示例,演示了如何使用 do...while 循环来计算1到5的和:

let sum = 0;
let i = 1;

do {
    sum += i;
    i++;
} while (i <= 5);

console.log(sum); // 输出:15

在这个示例中,无论条件是否满足,循环体内的代码块至少会执行一次。然后,通过检查条件 i <= 5,确定是否继续执行循环。

do...while 循环通常用于需要至少执行一次循环体内代码的情况,然后根据条件决定是否继续执行。与 while 循环相比,do...while 循环在执行循环体前先检查条件,因此即使条件一开始就不满足,循环体也会执行一次。

for…i循环

for 循环是 JavaScript 中最常用的循环语句之一,它允许在一定次数的循环中重复执行代码块。for 循环的结构如下:

for (initialization; condition; iteration) {
    // 执行代码块
}
  • initialization:在循环开始前执行的表达式,通常用于初始化计数器或者声明变量。
  • condition:在每次循环迭代前被求值的表达式。如果该表达式的值为 true,则继续循环;如果为 false,则退出循环。
  • iteration:在每次循环之后执行的表达式,通常用于递增或递减计数器。

以下是一个简单的示例,演示了如何使用 for 循环来计算1到5的和:

let sum = 0;

for (let i = 1; i <= 5; i++) {
    sum += i;
}

console.log(sum); // 输出:15

在这个示例中,for 循环首先初始化变量 i 为1,然后在每次循环迭代时检查 i <= 5 是否为真,如果为真则执行循环体内的代码块,并递增 i。当 i 超过5时,循环结束。

for 循环通常用于已知循环次数的情况下,因为其结构明确地指定了初始化、条件和迭代步骤。相比之下,whiledo...while 循环更适合在条件为真时重复执行代码块,或者在需要至少执行一次循环体的情况下使用。

for…in循环

for...in 循环是 JavaScript 中用于遍历对象属性的一种循环语句。它会枚举对象的可枚举属性,并对每个属性执行指定的代码块。for...in 循环的结构如下:

for (variable in object) {
    // 执行代码块
}
  • variable:在每次循环迭代中,将会赋值为当前属性的名称。
  • object:要遍历的对象。

以下是一个简单的示例,演示了如何使用 for...in 循环遍历对象的属性:

let person = {
    name: 'Alice',
    age: 30,
    gender: 'female'
};

for (let key in person) {
    console.log(key + ': ' + person[key]);
}

在这个示例中,for...in 循环遍历了 person 对象的所有属性,对每个属性执行了一段代码,输出了属性名和属性值。

需要注意的是,for...in 循环不仅会遍历对象自身的可枚举属性,还会遍历对象的原型链上的可枚举属性。因此,在使用 for...in 循环时,通常需要通过 hasOwnProperty 方法来检查属性是否是对象自身的属性,以避免遍历到继承的属性。

for...in 循环通常用于遍历对象的属性,特别是在处理未知数量的属性时非常实用。但在遍历数组时,推荐使用传统的 for 循环或者 forEach 方法。

for…of循环

for...of 循环是 JavaScript 中用于遍历可迭代对象的一种循环语句。它可以遍历数组、字符串、Map、Set 等可迭代对象,并对每个元素执行指定的代码块。for...of 循环的结构如下:

for (variable of iterable) {
    // 执行代码块
}

- `variable`:在每次循环迭代中,将会赋值为当前元素的值。
- `iterable`:要遍历的可迭代对象。

以下是一个简单的示例,演示了如何使用 for...of 循环遍历数组:

let arr = [1, 2, 3, 4, 5];

for (let element of arr) {
    console.log(element);
}

在这个示例中,for...of 循环遍历了数组 arr 的所有元素,并对每个元素执行了一段代码,输出了数组中的每个元素的值。

需要注意的是,for...of 循环只能遍历可迭代对象的值,而不能直接访问对象的键。如果需要遍历对象的键值对,可以使用 for...in 循环或者 Object.entries 方法。

for...of 循环通常用于遍历数组或其他可迭代对象的值,相比传统的 for 循环,它的语法更加简洁清晰,并且可以避免下标的管理。但需要注意的是,for...of 循环无法遍历普通的对象,因为普通对象不是可迭代的。


比较continue和break

continuebreak 是两种常用的控制流程的语句,它们用于在循环中进行条件控制和流程控制。

  1. continue语句:

    • continue 语句执行时,它会立即停止当前循环的迭代,并跳到下一次迭代。
    • forwhiledo...while 循环中,当 continue 语句执行时,循环会跳过当前迭代中的剩余代码,并开始下一次迭代。
    • continue 主要用于在不满足特定条件时跳过当前循环迭代,继续执行下一次迭代。
    • 通常用于处理特定条件下的特殊情况,或者遍历数组、对象等数据结构时跳过某些元素的处理。
  2. break语句:

    • break 语句执行时,它会立即终止当前所在的循环,并跳出该循环的执行流程,继续执行循环后面的代码。
    • forwhiledo...while 循环中,当 break 语句执行时,循环会立即停止执行,程序流程会跳出该循环,执行循环后面的代码。
    • break 主要用于在满足某些条件时立即终止循环的执行,提前跳出循环。
    • 通常用于在搜索特定条件或达到特定情况时停止循环,或者遍历数组、对象等数据结构时满足某个条件就终止循环。

比较:

  • continue 用于跳过当前迭代,继续执行下一次迭代;而 break 用于立即终止当前循环,跳出循环体。
  • continue 适用于特定条件下需要跳过某些迭代的情况,而 break 适用于需要提前结束整个循环的情况。
  • 在某些情况下,continuebreak 可以结合使用,根据不同的条件进行不同的控制流程。

比较for和while

forwhile 是 JavaScript 中两种常见的循环结构,它们都用于重复执行一段代码,但在语法和使用上有一些区别。

  1. for 循环

    • for 循环通常用于已知循环次数的情况,它的语法结构包括初始化、条件判断和迭代器。

    • 语法结构:

      for (初始化; 条件判断; 迭代器) {
          // 执行代码块
      }
      
    • 初始化:循环开始前执行的语句,通常用于初始化计数器或设置初始条件。

    • 条件判断:在每次迭代开始前都会检查的条件,如果条件为真,则继续执行循环体内的代码块;如果条件为假,则结束循环。

    • 迭代器:在每次迭代结束后执行的语句,通常用于更新计数器或迭代器变量。

  2. while 循环

    • while 循环用于在条件为真时重复执行一段代码,它的语法结构只包括条件判断。

    • 语法结构:

      while (条件判断) {
          // 执行代码块
      }
      
    • 条件判断:在每次迭代开始前都会检查的条件,如果条件为真,则继续执行循环体内的代码块;如果条件为假,则结束循环。

比较:

  • for 循环适用于已知循环次数的情况,例如遍历数组或执行固定次数的操作。
  • while 循环适用于条件未知、需要在满足特定条件时重复执行的情况,例如处理用户输入或实现动态条件下的循环。
  • for 循环的结构更加紧凑,适用于需要在有限次数内迭代的情况;而 while 循环则更加灵活,适用于处理未知次数的迭代。
  • 通常情况下,for 循环用于遍历数组等已知长度的数据结构,而 while 循遍历只关注条件是否满足,不关注循环长度。

关注我,不迷路,共学习,同进步

关注我,不迷路,共学习,同进步

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1625721.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++程序在Windows平台上各种定位内存泄漏的方法

一、前言 在Linux平台上有valgrind可以非常方便的帮助我们定位内存泄漏&#xff0c;因为Linux在开发领域的使用场景大多是跑服务器&#xff0c;再加上它的开源属性&#xff0c;相对而言&#xff0c;处理问题容易形成“统一”的标准。而在Windows平台&#xff0c;服务器和客户端…

云计算时代:SFP、SFP+、SFP28、QSFP+和QSFP28光纤模块详解

随着数据中心的快速发展和云计算的广泛应用&#xff0c;高速、高效率的光纤网络传输成为关键需求。在众多光纤模块中&#xff0c;SFP、SFP、SFP28、QSFP和QSFP28是最常见的几种类型。本文将为您详细解析这几种光纤模块之间的区别&#xff0c;帮助您更好地了解和选择适合自己需求…

VS2019中配置C++ OpenCV 4.5.4完整指南

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的在读研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三…

C# 图像处理 添加水印

方法1&#xff0c;使用自带的画刷进行绘制水印 示例代码 public partial class Form1 : Form{public Form1(){InitializeComponent();}string photoPathstring.Empty;Bitmap image null;private void button1_Click(object sender, EventArgs e) //选择照片{OpenFileDialog d…

JavaWeb-自学JSP组件报告

自学JSP组件报告 一、组件资源及作用 1. commons-fileupload-1.2.2.jar 组件作用&#xff1a;用于处理HTTP文件上传请求&#xff0c;提供了文件上传的解析和存储功能。它允许开发者在Web应用中轻松实现文件上传功能。 2. commons-io-2.4.jar 组件作用&#xff1a;提供了一…

免单优选:电商销售新模式,低门槛高回报引领消费热潮

免单优选&#xff0c;一种颠覆传统的电商销售新模式&#xff0c;其核心在于通过价格优化策略、创新的奖励机制以及社交网络的深度应用&#xff0c;来激发消费者的购买欲望&#xff0c;进而推动销售实现快速增长。 一、坚守法律底线&#xff0c;打造透明奖励体系 免单优选模式坚…

POCEXP编写—POC编写实战

POC&EXP编写—POC编写实战 1. 概念引入2. POC编写2.1. GET与POST2.2. thinkcmf文件包含(Get请求)2.2.1. POC验证2.2.1.1. 漏洞存在复现 2.2.2. 编写POC2.2.2.1. 脚本报错2.2.2.2. 脚本美化2.2.2.3. 脚本测试2.2.2.4. 注意事项 2.3. Struts2 S2-061 远程命令执行漏洞(Get请求…

Hot 100总结【leetcode】

文章目录 哈希1. 1 两数之和2. 49 字母异或词分组3. 128 最长连续序列4. 283 移动零5. 11 盛最多水的容器6. 15 三数之和7. 42 接雨水 滑动窗口8. 3 无重复的最长子串9. 438 找到字符串中所有字母异位词子串10. 560 和为k的子数组11. 239 滑动窗口最大值12. 76 最小覆盖子串 普…

SpringBoot + kotlin 协程小记

前言&#xff1a; Kotlin 协程是基于 Coroutine 实现的&#xff0c;其设计目的是简化异步编程。协程提供了一种方式&#xff0c;可以在一个线程上写起来像是在多个线程中执行。 协程的基本概念&#xff1a; 协程是轻量级的&#xff0c;不会创建新的线程。 协程会挂起当前的协…

KT-0850 三箱社交箱

01简介 社交一般指社会交往。 社会交往 &#xff0c;简称“社交”&#xff08;socializing&#xff09;&#xff0c;是指在一定的历史条件下&#xff0c;个体之间相互往来&#xff0c;包括物质、精神交流的社会活动。三箱社交(Three-chamber Sociability)箱行为实验是一种经典…

【蓝桥2025备赛】容斥原理

容斥原理 背景&#xff1a;两个集合相交 高中的韦恩图&#xff0c;我们知道两个集合相交时我们可以通过简单的计算来认识相关的性质 集合相交的区域是 A ∩ B A\cap B A∩B ,集合的并集是 A ∪ B A\cup B A∪B ,那怎么用集合表示 A ∪ B A\cup B A∪B 我们可以看作是A集合…

【go零基础】go-zero从零基础学习到实战教程 - 2项目初始化

到项目初始化过程了&#xff0c;这边的项目设计完全按照作者自己的喜好来进行定义和设置的&#xff0c;所以各位完全可以按照自己的偏好自喜设置哈。 首先是创建一个工作文件夹哈。 别问为啥不直接quickstart&#xff0c;因为quickstart生成的api名字是greet&#xff0c;改起来…

Springboot3集成Web、RedisTemplate、Test和knife4j

本例将展示&#xff0c;如何在Springboot3中完成&#xff1a; Redis功能的Web接口实现构建Redis功能的单元测试knife4j自动化生成文档 Redis功能 Pom.xml <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter…

02 贪吃蛇

前言 呵呵 这是不知道 在哪里看到的 别人做的一个贪吃蛇 因此 也把我 之前的 贪吃蛇 移植上来了 当然 这个不过是为了 简单的入门了解, 呵呵 然后 c版本的贪吃蛇 需要先移植成 c 版本, 然后 再根据 单片机相关 设计调整 比如 led 点阵的输出, 比如 c99 语法的一些不兼容…

分布式密钥生成

可验证且无经销商 分布式密钥生成 (DKG) 是一种加密协议&#xff0c;使多方能够协作生成共享密钥&#xff0c;而无需任何一方完全了解密钥。 它通过在多个参与者之间分配信任来增强各种应用程序的安全性&#xff0c;从而降低密钥泄露的风险。 我们引入了一种可验证且无经销商的…

C语言中整型与浮点型在内存中的存储

今天让我们来看看整型的数据和浮点型的数据在内存中是怎么存储的呢 整型数据在内存中的存储 整型数据在内存中存储的是二进制的补码 正数的话也没什么可说的&#xff0c;原码反码补码都相同 我们来看看负数&#xff1a; 以-5为例 原码&#xff1a;10000000 00000000 00000000 0…

集控中心的调度桌成就事业的重要工具

在集控中心的调度室内&#xff0c;一排排整齐的调度桌构成了一道独特的风景线。其中最引人注目的便是那一张张配备现代化设备&#xff0c;宽敞而舒适的调度桌。就我们嘉德立来说这些调度桌不仅见证了调度员们严谨、细致的工作态度&#xff0c;也是他们成就事业的重要工具。 集控…

C++初阶之入门

零、什么是C C是基于C语言而产生的&#xff0c;它既可以进行C语言的过程化程序设计&#xff0c;又可以进行以抽象数据类型为特点的基于对象的程序设计&#xff0c;还可以进行面向对象的程序设计。 C缺点之一&#xff0c;是相对许多语言复杂&#xff0c;而且难学难精。许多人说学…

13 c++版本的五子棋

前言 呵呵 这大概是 大学里面的 c 五子棋了吧 有一些 面向对象的理解, 但是不多 这里 具体的实现 就不赘述, 仅仅是 发一下代码 以及 具体的使用 然后 貌似 放在 win10 上面执行 还有一些问题, 渲染的, 应该很好调整 五子棋 #include<Windows.h> #include<io…

ChatGPT全方位指导:学术论文写作从零开始,轻松搞定高质量论文!

目录 文末福利 一、论文选题的深度探讨 二、撰写摘要的艺术 三、关键词的精选 四、引言的构建 五、正文的结构设计 六、撰写结论的策略 七、致谢的编写 八、附录的有效利用 九、参考文献的整理 文末有福利哦 撰写一篇高质量的学术论文是一项既复杂又耗时的任务。这个…