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 来控制循环流程,但要避免过度使用导致代码难以理解。

相关推荐
excel3 分钟前
Web发展与Vue.js导读
前端
YAY_tyy5 分钟前
Three.js 开发实战教程(五):外部 3D 模型加载与优化实战
前端·javascript·3d·three.js
Zuckjet_3 小时前
开启 3D 之旅 - 你的第一个 WebGL 三角形
前端·javascript·3d·webgl
2401_863801463 小时前
探索 12 种 3D 文件格式:综合指南
前端·3d
珍宝商店5 小时前
前端老旧项目全面性能优化指南与面试攻略
前端·面试·性能优化
bitbitDown5 小时前
四年前端分享给你的高效开发工具库
前端·javascript·vue.js
YAY_tyy5 小时前
【JavaScript 性能优化实战】第六篇:性能监控与自动化优化
javascript·性能优化·自动化
gnip6 小时前
实现AI对话光标跟随效果
前端·javascript
脑花儿6 小时前
ABAP SMW0下载Excel模板并填充&&剪切板方式粘贴
java·前端·数据库
闭着眼睛学算法7 小时前
【华为OD机考正在更新】2025年双机位A卷真题【完全原创题解 | 详细考点分类 | 不断更新题目 | 六种主流语言Py+Java+Cpp+C+Js+Go】
java·c语言·javascript·c++·python·算法·华为od