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.mfbz.cn/a/604782.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

那个在买珠宝的年轻人

金价搭上过山车&#xff0c;今年以来价格一路飙涨。 珍珠身价同步飙升&#xff0c;晋级珠宝圈“新宠”。 文玩圈“减龄”&#xff0c;盘珠串不再只是“老头乐”。 月薪3000的年轻人&#xff0c;悄悄实现“宝石”自由。 黄金珠宝走俏&#xff0c;这届年轻人到底有着怎样的珠宝…

Baidu Comate智能编码助手 -----AI编程帮你解放双手

目录 Baidu Comate是什么&#xff1f; Baidu Comate如何安装&#xff1f; 在VSCode上安装Baidu Comate插件 Baidu Comate如何使用&#xff0c;有哪些功能&#xff1f; 1.代码解释 2.代码注释 使用感受 如何体验 Baidu Comate是什么&#xff1f; Baidu Comate智能编码助手…

网络编程入门之UDP编程

欢迎各位帅哥美女来捧场&#xff0c;本文是介绍UDP网络编程。在这里&#xff0c;你会见到最详细的教程&#xff1b;细致到每一行代码&#xff0c;每一个api的由来和使用它的目的等。 目录 1.UDP相关API 1.1.两个类 1.2.两个类中的方法 2.UDP编程 2.1.大体框架 2.2.内容构…

修改el-checkbox样式

一定要在最外层&#xff1b; //未选中框/deep/ .el-checkbox__inner{border-color: #0862a3;}//选中框/deep/ .el-checkbox__input.is-checked .el-checkbox__inner{background-color: #0862a3;border-color: #0862a3;}//未选中框时右侧文字/deep/ .el-checkbox__label{}//选中…

企业做网站,如何设计才有创意?

企业做网站&#xff0c;如何设计才有创意&#xff1f;我们都希望能打造一个有创意的网站建设&#xff0c;能在众多网站中脱颖而出&#xff0c;能够营销推广公司的产品&#xff0c;为公司带来更多的经济效益收益。广州网站建设的时候&#xff0c;记住直观的设计可以让用户体验更…

Terrain —— Nodes

目录 Convert HeightField —— 转化高度场 HeightField —— 为地形创建初始高度场或遮罩场 HeightField Blur —— 模糊高度场或遮罩场 HeightField Clip —— 限制高度场的值 HeightField Combine Layers —— 将多个volume或VDB合并为一个新的volume或VDB HeightFiel…

C++浮点数format时的舍入问题

C浮点数format时的舍入问题 首先有这样一段代码&#xff1a; #include <iostream> #include <stdio.h> using namespace std;int main() {cout << " main begin : " << endl;printf("%.0f \r\n", 1.5);printf("%.0f \r\n&…

2024副业指南:年轻人热捧的七大赚钱副业,在家就能做!做得好的月入过万了

副业&#xff0c;听起来就像是在主业之外的“小打小闹”&#xff0c;但你知道吗&#xff1f;很多人通过副业实现了财务自由&#xff0c;甚至有的人副业收入超过了主业&#xff01; 今天&#xff0c;就让我们一起探索那些适合你的副业机会&#xff0c;让你在工作之余也能成为收入…

3D模型素材有哪些常见的用途?

3D模型素材已经成为了设计、游戏开发、电影制作和建筑等领域的重要工具。它们以其独特的形式和丰富的细节&#xff0c;为这些领域的专业人士提供了无尽的创作可能性。 1.建筑和室内设计&#xff1a;在建筑设计中&#xff0c;3D模型可以帮助建筑师更直观地展示设计方案&#xff…

oracle试用期过期,解决办法

过期重置方法&#xff0c;删除注册表&#xff0c;相当于无限试用&#xff0c;缺点每30天都要重置一次 1. window r 输入 regedit 确定&#xff0c;打开注册表 2.删除下图里的两个文件夹 3.重启 plsql,登录成功

二叉树的前序、中序、后序遍历的C++实现

二叉树的前序、中序、后序 遍历属于深度优先搜索方式&#xff0c;本文使用递归法实现前序、中序、后序的遍历方法&#xff0c;代码如下&#xff1a; #include <iostream> #include <vector>struct TreeNode{int val;TreeNode* left;TreeNode* right;TreeNode(int …

Windows基于WSL2安装Kali-linux

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、kali-linux是什么&#xff1f;二、简单使用1.下载2.打开1.通过应用列表2.通过Terminal 三、安装图形界面1.下载2.打开 四、重头戏总结 前言 kali-linux大家…

NERF++:Analyzing and Improving Neural Radiance Fields神经辐射场的分析与改进

ABSTRACT 神经辐射场(NeRF)可以实现各种捕获设置的令人印象深刻的视图合成结果&#xff0c;包括360度捕获有界场景和前向捕获有界和无界场景。NeRF 将代表视图不变不透明度和视图相关颜色体积的多层感知器(MLPs)匹配到一组训练图像中&#xff0c;并基于立体渲染技术对新视图进…

力扣刷题--数组--第三天

今天再做两道二分查找的题目&#xff0c;关于二分查找的知识可看我前两篇博客。话不多说&#xff0c;直接开干&#xff01; 题目1&#xff1a;69.x 的平方根 题目详情&#xff1a;   给你一个非负整数 x &#xff0c;计算并返回 x 的 算术平方根 。由于返回类型是整数&#…

从零开始的软件测试学习之旅(九)jmeter直连数据库及jmeter断言,关联

jmeter直连数据库及断言,关联 jmeter直连数据库步骤jmeter断言jmeter逻辑控制器if控制器ForEach控制器循环控制器 Jmeter关联Jmeter关联XPath提取器Jmeter关联正则表达式提取器二者比较跨线程组关联 每日复习 jmeter直连数据库 概念 这不叫直连:Jmeter -> java/python 提供的…

单片机-点亮第一盏灯

原理图 需求&#xff1a;点亮或是熄灭LED 通过控制 P5.3引脚输出高电平时&#xff0c;LED灯就点亮&#xff0c;输出低电平时LED灯就熄灭 1.项目创建 新建项目 配置开发板信息 当前位STC芯片的开发板&#xff0c;选择STC MCU Database 搜素具体芯片型号&#xff0c;进行配置…

Spring-依赖注入的处理过程

前置知识 1 入口 DefaultListableBeanFactory#resolveDependency 2 每个依赖都有对应的DependencyDescriptor 3 自定绑定候选对象处理器AutowireCapableBeanFactory 注入处理 我们可以看到AutowireCapableBeanFactory中有两个方法&#xff1a; 第一个是单个注入&#xff1a;…

52页 | 2024大型语言模型行业图谱研究报告(免费下载)

【1】关注本公众号&#xff0c;转发当前文章到微信朋友圈 【2】私信发送 【2024大型语言模型行业图谱研究报告】 【3】获取本方案PDF下载链接&#xff0c;直接下载即可。 如需下载本方案PPT原格式&#xff0c;请加入微信扫描以下方案驿站知识星球&#xff0c;获取上万份PPT解…

【软考高项】三十六、资源管理6个过程

一、规划资源管理 1、定义、作用 定义&#xff1a;定义如何估算、获取、管理和利用团队以及实物资源的过程作用&#xff1a;根据项目类型和复杂程度确定适用于项目资源的管理方法和管理程度 2、输入 项目管理计划 质量管理计划、范围基准项目章程 项目文件 需求文件…

PostgreSQL和openGauss优化器对一个关联查询的SQL优化改写

PostgreSQL和openGauss数据库优化器在merge join关联查询的SQL优化改写 PostgreSQL 查询计划openGauss 查询计划拓展对比 看腻了文章就来听听视频讲解吧&#xff1a;https://www.bilibili.com/video/BV1oH4y137P7/ 数据库类型数据库版本PostgreSQL16.2openGauss6.0 创建测试表…
最新文章