程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • HTML

  • CSS

  • JavaScript

    • 简介和用法
    • 变量和数据类型
    • 运算符
    • 数据类型转换
    • 选择结构
    • 循环结构
      • 1. 简介
      • 2. 基本用法
        • 2.1 while 循环
        • 2.2 do...while 循环
        • 2.3 for 循环
        • 2.4 for...in 循环
        • 2.5 for...of 循环
      • 3. 循环控制
      • 4. 二重循环
      • 5. 综合示例
    • 数组
    • 数组遍历
    • 函数
    • Debug调试
    • DOM
    • 事件处理
    • BOM(浏览器对象模型)
    • 自定义对象
    • 原型 (Prototype)
    • 内置对象
    • 客户端存储
    • 模块加载方案
  • 前端三剑客
  • JavaScript
scholar
2024-07-19
目录

循环结构

# 循环结构

# 1. 简介

循环结构用于重复执行某个操作。常见的循环结构包括:while、do...while、for、for...in、for...of。

# 2. 基本用法

# 2.1 while 循环

while 循环先判断条件是否成立,再执行代码块。只要条件成立,就会重复执行代码块。

语法:

while (条件) {
    // 代码块
}
1
2
3

示例:

var i = 0;
while (i < 5) {
    console.log(i);
    i++;
}
// 输出:0 1 2 3 4
1
2
3
4
5
6

# 2.2 do...while 循环

do...while 循环先执行代码块,再判断条件是否成立。无论条件是否成立,代码块至少执行一次。

语法:

do {
    // 代码块
} while (条件);
1
2
3

示例:

var i = 0;
do {
    console.log(i);
    i++;
} while (i < 5);
// 输出:0 1 2 3 4
1
2
3
4
5
6

# 2.3 for 循环

for 循环通常用于已知循环次数的情况。包含三个部分:初始化、条件和迭代。

语法:

for (初始化; 条件; 迭代) {
    // 代码块
}
1
2
3

示例:

for (var i = 0; i < 5; i++) {
    console.log(i);
}
// 输出:0 1 2 3 4
1
2
3
4

# 2.4 for...in 循环

for...in 循环用于迭代对象的可枚举属性,包括继承的可枚举属性。它适用于遍历对象的属性名,也可以用于数组的索引(但不推荐)。

语法:

for (循环变量 in 集合) {
    // 循环操作
}
1
2
3

特点:

  1. 适用于遍历对象的属性名。
  2. 返回对象的所有可枚举属性,包括继承的可枚举属性。
  3. 在遍历数组时,会返回数组的索引(作为字符串)。
  4. 不保证遍历顺序。

示例:

// 遍历对象的属性名
var obj = {a: 1, b: 2, c: 3};
for (var key in obj) {
    console.log(key + ": " + obj[key]);
}
// 输出:
// a: 1
// b: 2
// c: 3

// 遍历数组的索引
var arr = [10, 20, 30];
for (var index in arr) {
    console.log(index + ": " + arr[index]);
}
// 输出:
// 0: 10
// 1: 20
// 2: 30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 2.5 for...of 循环

for...of 循环用于迭代可迭代对象(包括数组、字符串、Map、Set 等)的元素。它适用于遍历数组的元素值。

语法:

for (循环变量 of 集合) {
    // 循环操作
}
1
2
3

特点:

  1. 适用于遍历可迭代对象的元素值。
  2. 不适用于遍历对象的属性名。
  3. 返回可迭代对象的每个元素。
  4. 保证遍历顺序。

示例:

// 遍历数组的元素值
var arr = [10, 20, 30];
for (var value of arr) {
    console.log(value);
}
// 输出:
// 10
// 20
// 30

// 遍历字符串的字符
var str = "hello";
for (var char of str) {
    console.log(char);
}
// 输出:
// h
// e
// l
// l
// o
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 3. 循环控制

break: 跳出整个循环,执行循环之后的代码。一般与 if 一起使用。

示例:

for (var i = 0; i < 10; i++) {
    if (i === 5) {
        break;
    }
    console.log(i);
}
// 输出:0 1 2 3 4
1
2
3
4
5
6
7

continue: 跳出本次循环,执行下一次循环(本次尚未执行完的代码不再执行)。

示例:

for (var i = 0; i < 10; i++) {
    if (i === 5) {
        continue;
    }
    console.log(i);
}
// 输出:0 1 2 3 4 6 7 8 9
1
2
3
4
5
6
7

# 4. 二重循环

一个循环中嵌套着另一个循环,称为二重循环。各种循环可以相互嵌套。

  • 外层循环变量变化一次,内层循环变量要变化一遍。
  • 二重循环中的 break 和 continue,遵循就近原则。

示例:

for (var i = 0; i < 3; i++) {
    for (var j = 0; j < 3; j++) {
        console.log("i = " + i + ", j = " + j);
        if (j === 1) {
            break; // 仅跳出内层循环
        }
    }
}
// 输出:
// i = 0, j = 0
// i = 0, j = 1
// i = 1, j = 0
// i = 1, j = 1
// i = 2, j = 0
// i = 2, j = 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 5. 综合示例

以下是综合示例,演示了各种循环的使用:

// while 循环
var i = 0;
while (i < 5) {
    console.log("while:", i);
    i++;
}

// do...while 循环
var j = 0;
do {
    console.log("do...while:", j);
    j++;
} while (j < 5);

// for 循环
for (var k = 0; k < 5; k++) {
    console.log("for:", k);
}

// for...in 循环遍历对象
var person = {name: "John", age: 30};
for (var key in person) {
    console.log("for...in (object):", key, person[key]);
}

// for...in 循环遍历数组
var arr = [1, 2, 3];
for (var index in arr) {
    console.log("for...in (array):", index, arr[index]);
}

// for...of 循环遍历数组
for (var value of arr) {
    console.log("for...of:", value);
}

// break 示例
for (var m = 0; m < 10; m++) {
    if (m === 5) {
        break;
    }
    console.log("break:", m);
}

// continue 示例
for (var n = 0; n < 10; n++) {
    if (n === 5) {
        continue;
    }
    console.log("continue:", n);
}

// 二重循环
for (var x = 0; x < 3; x++) {
    for (var y = 0; y < 3; y++) {
        console.log("二重循环: x =", x, ", y =", y);
        if (y === 1) {
            break; // 仅跳出内层循环
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
编辑此页 (opens new window)
上次更新: 2025/01/25, 22:32:05
选择结构
数组

← 选择结构 数组→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式