Javascript 中循环的使用

Javascript 中循环的使用

个人主页:康师傅前端面馆


JavaScript 提供了多种循环结构来处理重复任务,最常见的包括 forwhiledo...while 循环,以及高级的 for...infor...of 循环和数组的 forEachmap 等方法。合理使用这些循环结构可以提高代码的效率和可读性。

1. 基础用法

1.1 for 循环

for 循环是最常用的循环结构之一,适合已知循环次数的情况。

javascript 复制代码
for (let i = 0; i < 5; i++) {
  console.log(i); // 输出 0 到 4
}

1.2 while 循环

while 循环适用于在满足条件时重复执行代码块。

javascript 复制代码
let i = 0;
while (i < 5) {
  console.log(i);
  i++;
}

1.3 do...while 循环

do...while 循环至少执行一次代码块,然后在满足条件时继续执行。

javascript 复制代码
let i = 0;
do {
  console.log(i);
  i++;
} while (i < 5);

2. 高级操作

2.1 for...in 循环

for...in 循环用于遍历对象的可枚举属性。

javascript 复制代码
const obj = { a: 1, b: 2, c: 3 };
for (let key in obj) {
  console.log(key, obj[key]);
}

2.2 for...of 循环

for...of 循环用于遍历可迭代对象(如数组、字符串等)。

javascript 复制代码
const arr = [1, 2, 3];
for (let value of arr) {
  console.log(value);
}

2.3 forEach 方法

数组的 forEach 方法提供了一种更简洁的遍历方式。

javascript 复制代码
const arr = [1, 2, 3];
arr.forEach((value, index) => {
  console.log(index, value);
});

2.4 map 方法

map 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数。

javascript 复制代码
const arr = [1, 2, 3];
const doubled = arr.map(x => x * 2);
console.log(doubled); // [2, 4, 6]

3. 副作用与注意事项

3.1 无限循环

忘记更新循环变量可能导致无限循环。

javascript 复制代码
// 错误示例:忘记更新 i
for (let i = 0; i < 5;) {
  console.log(i);
}

3.2 修改循环变量

在循环中修改循环变量可能导致意外行为。

javascript 复制代码
// 错误示例:在循环中修改循环变量
for (let i = 0; i < 5; i++) {
  console.log(i);
  i--; // 会导致无限循环
}

3.3 使用 breakcontinue

break 用于跳出循环,continue 用于跳过当前迭代。

javascript 复制代码
for (let i = 0; i < 10; i++) {
  if (i === 3) continue; // 跳过 i=3
  if (i === 7) break;    // 在 i=7 时跳出循环
  console.log(i);
}

4. 推荐方案

  1. 优先使用 for...of :对于数组和可迭代对象,优先使用 for...of 循环,因为它更简洁且不易出错。
javascript 复制代码
const arr = [1, 2, 3];
for (let value of arr) {
  console.log(value);
}
  1. 使用函数式方法 :对于数组操作,优先使用 mapfilterreduce 等函数式方法,它们更易读且不易产生副作用。
javascript 复制代码
const arr = [1, 2, 3];
const doubled = arr.map(x => x * 2);
  1. 避免修改循环变量:在循环中避免修改循环变量,以防止意外行为。

  2. 合理使用 breakcontinue :在适当情况下使用 breakcontinue 来控制循环流程,但要避免过度使用导致代码难以理解。

相关推荐
Setsuna_F_Seiei5 小时前
前端的 AI 学习之路 01 之 Agent API 调用 - 和 Agent 的基础对话
前端·人工智能·ai编程
threerocks5 小时前
AI 原生软件开发生命周期手册 - 如何借助 AI,逐阶段改造软件开发生命周期
前端·javascript·后端
徐小夕5 小时前
3分钟从想法到Agent上线:我们开源了一款AI可视化工作流“IDE”
前端·算法·github
ly76897 小时前
JavaScript 从入门到进阶:核心语法、异步编程与工程化实践
开发语言·javascript·ecmascript
why技术7 小时前
eli5,我觉得这个全网在吹的技能,使用体验真的很一般啊。
前端·人工智能·后端
excel7 小时前
记录升级 nuxt3 到 nuxt4 记录
前端
剑胆琴心静水深流8 小时前
全栈之路6---web集成与呈现
前端·vue.js·spring boot·分布式·spring·前端框架·npm
前端snow8 小时前
ai agent -- Memory汇总
前端
ITresearchGuest8 小时前
AI 焦虑下,前端该何去何从
前端·人工智能
沙盘客9 小时前
AFSIM 示例解读(03)· 六自由度飞行仿真 six_dof(下):机场运作与弹道导弹投送
java·javascript·经验分享