当前位置: 首页 > news >正文

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.lryc.cn/news/343651.html

相关文章:

  • 树莓派4b测量PM2.5
  • 恒生电子,快手25届实习内推
  • 蓝桥杯练习系统(算法训练)ALGO-949 勇士和地雷阵
  • 腾讯安全客户端(电脑管家部门)一面
  • 激励与关怀并行:员工工作动力倍增之道
  • 软件系统安全设计规范(word原件)
  • 做题速度太慢了,面不上
  • Vue 路由
  • docker-compose-itd和d
  • WordPress MasterStudy LMS插件 SQL注入漏洞复现(CVE-2024-1512)
  • 初识Vue-组件通信(详解props和emit)
  • 二叉树的前序、中序、后序遍历的C++实现
  • golang中数组array和切片slice的区别
  • LSM-Tree 原理分析
  • 【代码随想录37期】Day01 二分查找 + 移除元素
  • GitPython 使用教程
  • MATLAB 基于规则格网的点云抽稀方法(自定义实现)(65)
  • 论文阅读】 ICCV-2021-3D Local Convolutional Neural Networks for Gait Recognition
  • 同一局域网如何从Windows系统拷贝文件到银河麒麟系统
  • 2024年华为OD机试真题-数的分解-(C++)-OD统一考试(C卷D卷)
  • vue-img-cutter 图片裁剪详解
  • PCL 点云中的平面点云提取
  • 4.用python爬取保存在text中的格式为m3u8的视频
  • 240503-关于Unity的二三事
  • 顺序栈的操作
  • STM32 各外设GPIO配置
  • React-hooks相关知识点总结
  • 20240508日记
  • Web实操(6),基础知识学习(24~)
  • JavaSE——方法详解