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

JavaScript的while和for循环

一、循环语句

1.认识循环

在开发中我们经常需要做各种各样的循环操作:

  • 比如把一个列表中的商品、歌曲、视频依次输出进行展示;
  • 比如对一个列表进行累加计算;
  • 比如运行相同的代码将数字 1 到 10 逐个输出;

循环 是一种重复运行同一代码的方法。

  • 如果是对某一个列表进行循环操作,我们通常也会称之为 遍历(traversal)或者迭代(iteration);

在JavaScript中支持三种循环方式:

  • while循环;
  • do…while循环;
  • for循环;

2.while循环

while语句包括一个循环条件和一段代码块,只要条件为真,就不断循环执行代码块。

while (条件)语句;// 或者
while (条件) 语句;

while语句的循环条件是一个表达式,必须放在圆括号中。代码块部分,如果只有一条语句,可以省略大括号,否则就必须加上大括号。

var i = 0;while (i < 100) {console.log('i 当前为:' + i);i = i + 1;
}

如果条件一直成立(为true),那么会产生死循环

while (true) {console.log('Hello, world');
}

这个时候必须通过关闭页面来停止死循环;开发中一定要避免死循环的产生;

3.for循环

for语句是循环命令的另一种形式,可以指定循环的起点、终点和终止条件。它的格式如下。

for (初始化表达式; 条件; 递增表达式)语句// 或者for (初始化表达式; 条件; 递增表达式) {语句
}

for语句后面的括号里面,有三个表达式。

  • 初始化表达式(initialize):确定循环变量的初始值,只在循环开始时执行一次。
  • 条件表达式(test):每轮循环开始时,都要执行这个条件表达式,只有值为真,才继续进行循环。
  • 递增表达式(increment):每轮循环的最后一个操作,通常用来递增循环变量。
var x = 3;
for (var i = 0; i < x; i++) {console.log(i);
}
// 0
// 1
// 2

for语句的三个部分(initialize、test、increment),可以省略任何一个,也可以全部省略。

for ( ; ; ){console.log('Hello World');
}

上面代码省略了for语句表达式的三个部分,结果就导致了一个无限循环

4.do-while循环

do...while循环与while循环类似,唯一的区别就是先运行一次循环体,然后判断循环条件。

do语句
while (条件);// 或者
do {语句
} while (条件);

不管条件是否为真,do...while循环至少运行一次,这是这种结构最大的特点。另外,while语句后面的分号注意不要省略。

var x = 3;
var i = 0;do {console.log(i);i++;
} while(i < x);

5.break 语句和 continue 语句

break语句和continue语句都具有跳转作用,可以让代码不按既有的顺序执行。

break: 直接跳出循环, 循环结束

  • break 某一条件满足时,退出循环,不再执行后续重复的代码
var i = 0;while(i < 100) {console.log('i 当前为:' + i);i++;if (i === 10) break;
}

continue: 跳过本次循环次, 执行下一次循环体

  • continue 指令是 break 的“轻量版”。
  • continue 某一条件满足时,不执行后续重复的代码
var i = 0;while (i < 100){i++;if (i % 2 === 0) continue;console.log('i 当前为:' + i);
}

上面代码只有在i为奇数时,才会输出i的值。如果i为偶数,则直接进入下一轮循环。

如果存在多重循环,不带参数的break语句和continue语句都只针对最内层循环。

6.标签(label)

JavaScript 语言允许,语句的前面有标签(label),相当于定位符,用于跳转到程序的任意位置,标签的格式如下。

label:语句

标签可以是任意的标识符,但不能是保留字,语句部分可以是任意语句。

标签通常与break语句和continue语句配合使用,跳出特定的循环。

top:for (var i = 0; i < 3; i++){for (var j = 0; j < 3; j++){if (i === 1 && j === 1) break top;console.log('i=' + i + ', j=' + j);}}
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0

上面代码为一个双重循环区块,break命令后面加上了top标签(注意,top不用加引号),满足条件时,直接跳出双层循环。如果break语句后面不使用标签,则只能跳出内层循环,进入下一次的外层循环。

标签也可以用于跳出代码块。

foo: {console.log(1);break foo;console.log('本行不会输出');
}
console.log(2);
// 1
// 2

上面代码执行到break foo,就会跳出区块。

http://www.lryc.cn/news/149835.html

相关文章:

  • mqtt安卓客户端
  • pdf怎么删除其中一页?
  • 10.Redis 渐进式遍历
  • 字符函数和字符串函数(2)
  • 目录扫描+JS文件中提取URL和子域+403状态绕过+指纹识别(dirsearch_bypass403)
  • 【UE 材质】常用向量运算节点——点积、叉积、归一化
  • 音视频 ffmpeg命令提取PCM数据
  • 【MySQL】实现可扩展性:构建高性能的系统
  • 网站用户体验之深度感悟
  • 目标检测YOLO实战应用案例100讲-道路场景下目标检测与分割模型的压缩研究与实现
  • 基于MSP430 红外避障-遥控小车(电赛必备 附项目代码)
  • 大型商城系统功能逻辑架构_各大系统关系设计_OctShop
  • 飞书接入ChatGPT,实现智能化问答助手功能,提供高效的解答服务
  • linux并发服务器 —— 多线程并发(六)
  • Nginx 部署 配置
  • 数据结构:时间复杂度和空间复杂度计算
  • 云原生Kubernetes:二进制部署K8S单Master架构(一)
  • ICCV 2023 | 利用双重聚合的Transformer进行图像超分辨率
  • 经纬恒润预期功能安全(SOTIF)解决方案为自动驾驶安全保驾护航
  • java从入门到起飞(七)——面向对象
  • 题集-三路划分和三数取中(快排优化)
  • 设计模式-迭代器
  • Hive学习(12)Hive常用日期函数
  • PowerQuery动态加载M公式
  • 2分钟搭建FastGPT训练企业知识库AI助理(Docker部署)
  • TDengine函数大全-字符串函数
  • part-02 C++知识总结(类型转换)
  • stable diffusion实践操作-图生图
  • Jtti:Ubuntu18.04如何修改远程ssh端口号
  • 微软表示Visual Studio的IDE即日起开启“退休”倒计时