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 提供了多种循环和迭代结构,以满足不同的编程需求。了解每种循环结构的特性和适用场景,可以帮助我们更高效地编写代码。在选择使用哪种循环时,需要考虑代码的可读性、性能和适用性。
相关文章:
JavaScript 循环方法详解
在编程中,循环是一种重复执行代码块的机制,直到满足某个条件为止。JavaScript 提供了多种循环结构来帮助我们实现这一功能。以下是 JavaScript 中常用的几种循环方法的详细解释。 1. for 循环 for 循环是 JavaScript 中最常用的循环结构之一。它使用一…...
树莓派4b测量PM2.5
1.GP2Y1010AU0F粉尘传感器连接图 2. GP2Y1010AU0F工作原理 工作原理 传感器中心有个洞可以让空气自由流过,定向发射LED光,通过检测经过空气中灰尘折射过后的光线来判断灰尘的含量。 3.源代码 main.py # coding=UTF-8 import RPi.GPIO as GPIO from ADC import ADS1015…...
恒生电子,快手25届实习内推
恒生电子,快手25届实习内推 ①快手 【岗位】算法、工程、游戏,产品运营、市场、职能等 【一键内推】https://campus.kuaishou.cn/recruit/campus/e/h5/#/campus/jobs?codecampuswQrLOMvHE 【内推码】campuswQrLOMvHE ②恒生电子 【招聘岗位】JAVA、测试…...
蓝桥杯练习系统(算法训练)ALGO-949 勇士和地雷阵
资源限制 内存限制:256.0MB C/C时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 勇士们不小心进入了敌人的地雷阵(用n行n列的矩阵表示,*表示某个位置埋有地雷,-表示某个…...
腾讯安全客户端(电脑管家部门)一面
上来介绍部门,之后自我介绍 说了是个喜欢每天都学点新东西的人,然后平常也会在课余时间之外去做点项目方面的学习,比如Web项目做出来就是因为兴趣。喜欢结构性的东西,有一门课叫电路电子学一次考试是专业第二。其他也都还可以&am…...
激励与关怀并行:员工工作动力倍增之道
在现代企业中,员工是推动公司发展的核心力量。如何激发员工的工作动力,使他们在工作中发挥出最大的潜力,一直是企业管理者关注的焦点。实际上,激励与关怀并行的策略,是一种非常有效的提升员工工作动力的方法。 激励是激…...
软件系统安全设计规范(word原件)
1.1安全建设原则 1.2 安全管理体系 1.3 安全管理规范 1.4 数据安全保障措施 1.4.1 数据库安全保障 1.4.2 操作系统安全保障 1.4.3 病毒防治 1.5安全保障措施 1.5.1实名认证保障 1.5.2 接口安全保障 1.5.3 加密传输保障 1.5.4终端安全保障 软件资料清单列表部分文档…...
做题速度太慢了,面不上
没办法,之前练了一个月的sql。两个月不写,现在差不多忘干净了。工作空窗期,或者休息期不能太久,不然学再多的内容都可能会忘完的。 sql题,腾讯四道sql题,限时45分钟完成。我只做了一道,还没做完…...
Vue 路由
单应用程序 SPA - Single Page Application 所有功能在一个html页面上实现 单页面应用 多用于 系统类网站/内部网站/文档类网站/移动端站点 多页面应用 多用于 公司官网/电商类网站 路由 单页面应用按需更新页面,需要明确访问路径和组件的对应关系 Vue中的路…...
docker-compose-itd和d
docker run -itd和-d的区别 前言: 今天在通过docker-compose启动一基于ubuntu的镜像容器时,发现启动后,容器会一直停止。但是通过docker run -itd是可以正常运行的。基于这个区别,找了一位大神(师傅)问…...
WordPress MasterStudy LMS插件 SQL注入漏洞复现(CVE-2024-1512)
0x01 产品简介 WordPress和WordPress plugin都是WordPress基金会的产品。WordPress是一套使用PHP语言开发的博客平台。该平台支持在PHP和MySQL的服务器上架设个人博客网站。WordPress plugin是一个应用插件。 0x02 漏洞概述 WordPress Plugin MasterStudy LMS 3.2.5 版本及之…...
初识Vue-组件通信(详解props和emit)
目录 一、组件通信介绍 1.概念 2.作用 3.特点 4.应用 二、组件通信语法 1.Props 1.1.在子组件中声明 props 1.2.在父组件中传递数据 2.Emit 2.1.在子组件中触发事件 2.2.在父组件中监听事件 三、应用实例 1. 购物车组件 2. 表单数据处理 四、总结 一、组件通信介…...
二叉树的前序、中序、后序遍历的C++实现
二叉树的前序、中序、后序 遍历属于深度优先搜索方式,本文使用递归法实现前序、中序、后序的遍历方法,代码如下: #include <iostream> #include <vector>struct TreeNode{int val;TreeNode* left;TreeNode* right;TreeNode(int …...
golang中数组array和切片slice的区别
go语言中最常用的数据结构 数组array 和 切片 slice的区别对比: 定义和初始化: 数组: [size]类型 切片: []类型 , 数组变量[low:high] var arr1 [3]string{"a", "b", "c"} //…...
LSM-Tree 原理分析
深入浅出分析LSM树(日志结构合并树) - 知乎 写得太好了,留下记录。便于复习。 LSM树详解 - 知乎 多了点点内容,也看看吧。...
【代码随想录37期】Day01 二分查找 + 移除元素
二分查找 力扣704 贴一下之前的笔记: 没想到一下子写不出来,忘记什么是二分法了,这里回顾一下: 「二分查找 binary search」是一种基于分治策略的高效搜索算法。 它利用数据的有序性,每轮减少一半搜索范围ÿ…...
GitPython 使用教程
GitPython 使用教程 GitPython 是一个用于与 Git 版本控制系统进行交互的 Python 库。它提供了简单的接口,让你可以通过 Python 代码执行 Git 命令和操作 Git 仓库。 1. 安装 GitPython 你可以使用 pip 在命令行中安装 GitPython: pip install gitpy…...
MATLAB 基于规则格网的点云抽稀方法(自定义实现)(65)
MATLAB 基于规则格网的点云抽稀方法(自定义实现)(65) 一、算法介绍二、算法实现1.代码2.结果一、算法介绍 海量点云的处理,需要提前进行抽稀预处理,相比MATLAB预先给出的抽稀方法,这里提供一种基于规则格网的自定义抽稀方法,步骤清晰,便于理解抽稀内涵, 主要涉及到使…...
论文阅读】 ICCV-2021-3D Local Convolutional Neural Networks for Gait Recognition
motivation :现有方法方法无法准确定位身体部位,不同的身体部位可以出现在同一个条纹(如手臂和躯干),一个部分可以出现在不同帧(如手)的不同条纹上。其次,不同的身体部位具有不同的尺度,即使是不同帧中的同一部分也可以出现在不同…...
同一局域网如何从Windows系统拷贝文件到银河麒麟系统
1. 先将Windows下的、被拷贝文件所在文件夹设置为共享目录:在文件夹上单击右键选择“属性”菜单,弹出如下对话框: 按数字顺序单击鼠标左键,弹出如下对话框: 并将权限开放为Everyone,单击“共享”按钮。 在…...
宽带卫星通信系统同步与大规模阵列波束成形技术【附程序】
✨ 长期致力于符号定时恢复、频率估计、可变分数延迟滤波器、时延估计、真时延阵列研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)基于迭代短卷积的多…...
ARM中断控制器架构与配置实践详解
1. ARM中断控制器架构解析在嵌入式系统设计中,中断控制器作为处理器与外围设备间的关键枢纽,其性能直接影响系统的实时性和可靠性。ARM1176JZF-S处理器采用了两级中断控制架构:位于开发芯片中的TrustZone中断控制器(TZIC)和通用中断控制器(GI…...
Win11Debloat免费工具:3步彻底清理Windows 11垃圾,性能提升51%
Win11Debloat免费工具:3步彻底清理Windows 11垃圾,性能提升51% 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes …...
告别物理开关!用CD4013和MOS管自制零功耗一键开关机模块(3-18V宽压适用)
零功耗一键开关机模块:基于CD4013的硬件设计实战 在电池供电的嵌入式系统和DIY电子项目中,电源管理往往成为决定设备续航能力的关键因素。传统机械开关虽然简单可靠,但无法实现软关机功能;而普通电子开关又常因静态功耗过高导致电…...
掌握ComfyUI视频处理:5步构建高效AI视频工作流
掌握ComfyUI视频处理:5步构建高效AI视频工作流 【免费下载链接】ComfyUI-VideoHelperSuite Nodes related to video workflows 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-VideoHelperSuite 在AI视频创作和内容制作领域,ComfyUI-Video…...
为什么选择LLMs-Zero-to-Hero:初学者到大模型专家的快速通道 [特殊字符]
为什么选择LLMs-Zero-to-Hero:初学者到大模型专家的快速通道 🚀 【免费下载链接】LLMs-Zero-to-Hero 从无名小卒到大模型(LLM)大英雄~ 欢迎关注后续!!! 项目地址: https://gitcode.com/gh_mir…...
期权量化交易基础库:模块化设计与回测实战指南
1. 项目概述:一个为期权交易者打造的“地基” 如果你在量化交易或者期权策略开发领域摸爬滚打过一段时间,大概率会和我有同样的感受:每次想测试一个新想法,都得从零开始搭建数据接口、计算希腊字母、管理仓位、回测框架……这些重…...
Linux服务器文件传输服务搭建:从FTP协议到vsftpd实战部署
1. 项目概述:为什么要在Linux上搭建FTP服务器?很多刚接触Linux的朋友,尤其是从Windows转过来的,一提到搭建服务器,特别是像FTP这种“古老”但依然实用的文件传输服务,第一反应可能就是“头大”。在Windows上…...
Flutter聊天UI组件库flutter_chat_ui:快速构建高质量聊天界面
1. 项目概述与核心价值如果你正在用Flutter开发一个聊天应用,并且不想从零开始手搓UI组件,那么flyerhq/flutter_chat_ui这个开源库,绝对值得你花时间研究一下。它不是一个完整的聊天SDK,不负责消息的发送、接收和存储,…...
初创公司如何借助Taotoken统一管理多个AI模型的API密钥
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初创公司如何借助Taotoken统一管理多个AI模型的API密钥 对于技术资源有限的初创公司而言,在业务开发中引入多种大模型能…...
