JavaScript 循环方法详解

在编程中,循环是一种重复执行代码块的机制,直到满足某个条件为止。JavaScript 提供了多种循环结构来帮助我们实现这一功能。以下是 JavaScript 中常用的几种循环方法的详细解释。

1. for 循环

for 循环是 JavaScript 中最常用的循环结构之一。它使用一个计数器变量来控制循环的次数。

for ([initialization]; [condition]; [final-expression]) {
// code block to be executed
}
  • initialization:初始化表达式(可选),在循环开始前执行一次。
  • condition:条件表达式,在每次循环迭代开始前检查。如果条件为 true,则执行循环体;如果为 false,则跳出循环。
  • final-expression:最终表达式(可选),在每次循环迭代结束后执行。

示例:

for (let i = 0; i < 10; i++) {
console.log(i);
}

2. while 循环

while 循环在指定的条件为 true 时重复执行代码块。

while (condition) {
// code block to be executed
}
  • condition:条件表达式,在每次循环迭代开始前检查。如果条件为 true,则执行循环体;如果为 false,则跳出循环。

示例:

let i = 0;
while (i < 10) {
console.log(i);
i++;
}

3. do...while 循环

do...while 循环会先执行一次代码块,然后检查条件。只要条件为 true,就会继续执行循环体。

do {
// code block to be executed
} while (condition);
  • condition:条件表达式,在每次循环迭代结束后检查。如果条件为 true,则继续执行循环体;如果为 false,则跳出循环。

示例:

let i = 0;
do {
console.log(i);
i++;
} while (i < 10);

4. for...in 循环

for...in 循环用于遍历对象的可枚举属性(包括继承的属性)。但请注意,由于它会遍历对象的所有可枚举属性(包括原型链上的属性),因此在使用时要格外小心。

for (variable in object) {
// code block to be executed
}
  • variable:在每次迭代中,将不同的属性名分配给变量。
  • object:要遍历其可枚举属性的对象。

示例(不推荐用于遍历数组,因为不保证顺序):

let obj = { a: 1, b: 2, c: 3 };
for (let key in obj) {
console.log(key + ": " + obj[key]);
}

5. for...of 循环

for...of 循环是 ES6 中引入的一种新的循环结构,用于遍历可迭代对象(包括 Array,Map,Set,String,TypedArray,函数的 arguments 对象等等)。

for (variable of iterable) {
// code block to be executed
}
  • variable:在每次迭代中,将不同的元素值分配给变量。
  • iterable:要遍历的可迭代对象。

示例:

let arr = [1, 2, 3];
for (let value of arr) {
console.log(value);
}

6. 递归

虽然递归不是一种循环结构,但它在某些情况下可以模拟循环的行为。递归函数是调用自身的函数,但通常包含一个退出条件来防止无限递归。

示例(递归计算阶乘):

function factorial(n) {
if (n === 0 || n === 1) {
return 1;
}
return n * factorial(n - 1);
}
console.log(factorial(5)); // 输出:120

总结

JavaScript 提供了多种循环和迭代结构,以满足不同的编程需求。了解每种循环结构的特性和适用场景,可以帮助我们更高效地编写代码。在选择使用哪种循环时,需要考虑代码的可读性、性能和适用性。

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

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

相关文章

python魔法方法是什么

魔法方法是python内置方法&#xff0c;不需要主动调用&#xff0c;存在的目的是为了给python的解释器进行调用&#xff0c;几乎每个魔法方法都有一个对应的内置函数&#xff0c;或者运算符&#xff0c;当我们对这个对象使用这些函数或者运算符时就会调用类中的对应魔法方法&…

leetcode746.使用最小花费爬楼梯(动态规划)

问题描述&#xff1a; 给你一个整数数组 cost &#xff0c;其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶部的最低…

ASP.NET Core SignalR 配置与集成测试究极指南

这篇文章也可以在我的博客中查看 前言 哥们最近都在埋头苦干&#xff0c;沉默是金&#xff0c;有一段时间没更新博客了。然而今儿SignalR集成测试实属是给我整破防了。虽说SignalR是.NET官方维护的实时通信库&#xff0c;已经开发了有十几年&#xff0c;甚至已经编入至了core…

MVC与MVVM架构模式

1、MVC MVC&#xff1a;Model-View-Controller&#xff0c;即模型-视图-控制器 MVC模式是一种非常经典的软件架构模式。从设计模式的角度来看&#xff0c;MVC模式是一种复合模式&#xff0c;它将多个设计模式结合在一种解决方案中&#xff0c;从而可以解决许多设计问题。 MV…

【3D目标检测】常见相关指标说明

一、mAP指标 mean Average Precision&#xff08;平均精度均值&#xff09;&#xff0c;它是目标检测和信息检索等任务中的重要性能指标。mAP 通过综合考虑精度和召回率来衡量模型的总体性能。 1.1 精度&#xff08;Precision&#xff09; 表示检索到的目标中实际为正确目标…

Spring Task及订单状态定时处理

1&#xff1a;Spring Task概念&#xff1a; Spring Task 是Spring框架提供的任务调度工具&#xff0c;可以按照约定的时间自动执行某个代码逻辑 定时任务的理解 定时任务即系统在特定时间执行一段代码&#xff0c;它的场景应用非常广泛&#xff1a; 购买游戏的月卡会员后&a…

前端如何给特定的组件设置缓存并处理定位问题?

前端如何给某些组件设置缓存并处理定位? 最近有个需求就是a>b,b页面处理了些操作,返回a页面时, b页面若有操作则a页面需要刷新并定位到上次点击的位置,b若没有操作则无需刷新直接定位上次点击的位置 1.首先在store中存储缓存的组件 vuex代码: const cached {state: {ca…

Centos7网络处理name or service not known

1、编辑->虚拟网络编辑器 2、查看本机的ip 3、 /etc/sysconfig/network-scripts/ 查看文件夹下面的 ifcfg-eth33 后面的33可能不一样 vi /etc/resolv.conf 编辑文件添加以下DNS nameserver 114.114.114.114 4、设置本机的网络 5、ping www.baidu.com 先重启…

第50期|GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以找…

js,JavaScript 类型化数组详解(2024-05-04)

1、JavaScript 类型化数组 在 Javascript 中&#xff0c;类型化数组是二进制数据的类似数组的缓冲区。 不存在名为 TypedArray 的 JavaScript 属性或对象&#xff0c;但属性和方法可以与类型化数组对象一起使用&#xff1a; const myArr new Int8Array(10); // 0,0,0,0,0,0…

全双工音频对讲模块-支持空中升级、多级无线中继

SA618F30是一款高集成的大功率全双工无线音频模块&#xff0c;发射功率高达32dBm。该音频模块简化接口&#xff0c;只需外接音频功放或麦克风即可作为一个小型对讲机&#xff0c;方便快捷嵌入到各类手持设备中。支持多级无线中继&#xff0c;支持OTA空中升级。 SA618F30配备1W…

Java快速入门系列-11(项目实战与最佳实践)

第十一章&#xff1a;项目实战与最佳实践 11.1 项目规划与需求分析项目规划需求分析实例代码 11.2 系统设计考虑实例代码 11.3 代码实现与重构实例代码 11.4 性能优化与监控实例代码 11.5 部署与持续集成/持续部署(CI/CD)实例代码 11.1 项目规划与需求分析 在进行任何软件开发…

06_G1调优配置

本章主要介绍&#xff0c;如果G1默认的一些配置无法满足你的需求&#xff0c;要如何进一步调优。 G1的一般建议 一般建议是使用G1并保持默认设置&#xff0c;如有需要&#xff0c;可以通过使用 -Xmx 来设置最大的Java堆大小&#xff0c;同时也可以通过 -XX:MaxGCPauseMillis来…

MySQL数据库失效:潜在场景、影响与应对策略

在当今数字化时代&#xff0c;数据库作为数据存储和管理的核心组件&#xff0c;其稳定性和可靠性直接影响着业务的连续性和用户体验。MySQL&#xff0c;作为最受欢迎的关系型数据库管理系统之一&#xff0c;广泛应用于互联网、金融、教育等多个行业。然而&#xff0c;即便是这样…

NTP 协议获取网络时间

从github 中找到的一份代码进行的修改 板卡是0区,手动加了8个时区 #include <iostream> #include <netdb.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #inclu…

Hikyuu-PF-银行股轮动交易策略实现

今天&#xff0c;带来的是“如何使用 Hikyuu 中的投资组合来实现银行股轮动交易策略”。 这个策略的逻辑很简单&#xff1a;持续持有两支市净率最低银行股&#xff0c;然后每月换仓 定义回测周期与回测标的 同样&#xff0c;首先定义回测周期&#xff1a; # 定义回测日期 …

撰写一份详尽的数据治理实施方案

对于拥有15年经验的资深数据治理工程师而言,是一个复杂而细致的任务,应当涵盖策略规划、组织架构调整、技术选型、流程设计、合规性考量、监控与评估等多个维度。本文概述一个高层次的数据治理实施方案框架,并简要说明每个部分的关键内容。如需深入细节,您可以根据这个框架…

了解内存函数

✨✨欢迎&#x1f44d;&#x1f44d;点赞☕️☕️收藏✍✍评论 个人主页&#xff1a;秋邱博客 所属栏目&#xff1a;C语言 前言 内存函数不止malloc、calloc、realloc、free还有memcpy、memmove、memset、memcmp。前四个的头文件是<stdlib.h>,后四个的头文件是<strin…

Ansible----playbook模块之templates模块、tags模块、roles模块

目录 引言 一、templates模块 &#xff08;一&#xff09;关键信息 &#xff08;二&#xff09;实际操作 1.定义主机组 2.设置免密登录 3.分别建立访问目录 4.定义模板文件 5.创建playbook文件 6.执行剧本 7.验证结果 二、tags模块 &#xff08;一&#xff09;创建…

《QT实用小工具·六十一》带动画的三角形指示箭头

1、概述 源码放在文章末尾 该项目实现了一个带动画效果的三角形指示箭头&#xff0c;项目demo演示如下所示&#xff1a; 用法 interestingindicate.h interestingindicate.cpp 放到工程中&#xff0c;直接使用即可。 注意&#xff1a;建议绝对布局&#xff0c;手动指定 wid…