JavaScript流程控制详解之循环结构(倒三角、九九乘法表)

循环结构

在JavaScript中,循环语句指的是在满足某个条件下重复执行 指定的一段代码。若条件结果为true,则重复执行,则进入循环,否则结束循环。

在JavaScript中,循环语句如下:

  • while语句
  • do....while语句
  • for语句

while语句

JavaScript中while语句创建一个循环,只要条件返回结果为true,该循环就会执行循环体

语法:

javascript 复制代码
while (条件表达式) {
   // 当条件为true时,则执行循环体
    statements;
}

怎么运行的?

  • 如果条件返回结果为true,则会执行大括号里的循环体statements
  • 当执行完大括号里的循环体statement后,会再次判断条件。如果条件返回结果仍然是true,则会继续执行大括号里的循环体,直到条件返回结果为false,则结束整个循环,然后再执行while语句后面的程序

while循环结构工作原理

示例:计算1+2+3+...+100的值

javascript 复制代码
<script>
			var num=1;
			var sum=0;
			while(num<=100)
			{
				sum+=num;
				++num;
			}
			console.log("1+2+3...+100="+sum);
</script>

运行结果

javascript 复制代码
1+2+3...+100=5050

怎么实现?

  • 初始化两个变量:num赋值为1,用于遍历1到100的整数,sum赋值为0,用于存储累加的结果
  • 使用while循环语句,条件是num<=100,只要num的值小于或等于100,循环就会继续执行下去
  • 在循环体中,将当前数值num累加到sum上,即sum+=num
  • 通过自增运算符,将num的值加一
  • 当num值大于100时,循环结束
  • 最后,用console.log()函数打印出计算结果

do...while语句

do...while循环语句创建一个循环,该循环执行循环体,直到条件计算结果为false

语法:

javascript 复制代码
do{
    //如果条件结果返回true,则执行该循环体
    statements;
}while(条件);
  • 与while循环语句不同,do....while语句首先会无条件执行循环体statements一次,然后再判断是否符合条件。
  • 如果符合条件,则重复执行循环体;如果不符合条件,则退出循环,执行循环后面的语句
  • do...while语句跟while语句非常相似,并且任何一个都可以转换成等价的另外一个
  • do...while语句结尾处括号后后有一个分号(;),该分号不能省略

注意:从后面ES6+版本开始,while(条件)后面的分号(;)是可选的

do...whileu循环语句工作原理

do...while在实践中,当您希望在检查条件之前至少执行一次循环体时,通常会使用该语句。

示例

javascript 复制代码
	<script>
			var num=0;
			do{
				console.log(num);
				num++;
			}while(num<5)
			
	</script>

运行结果

javascript 复制代码
0
1
2
3
4
  • 初始化一个变量num并赋值为0,用于记录循环计数
  • 使用do...while循环。首先执行一次循环体statements内的代码,然后再检查是否满足继续循环
  • 在循环体内,通过console.log()函数打印出当前num的值
  • 然后使用后置自增运算符将num的值加1,继续循环
  • 循环的条件是num<5,只要num的值小于5,就会继续执行循环体内的代码
  • 每次循环都会使num的值加1,并分别输出当前num的值

while语句

  • 先判断、后循环

do...while

  • 先循环、后判断

for 语句

for 是 JavaScript 提供的另一种循环控制的话句,它和 while 只是语法上存在差异。

for循环语句创建一个具有三个可选表达式的循环

语法:

javascript 复制代码
for(初始化表达式;条件表达式;循环后操作)
    {
        //循环体
        statements;
    }
  • 初始化表达式:这是用于初始化一个计数器。该表达式可以使用var或let关键字声明新的变量,使用var声明的变量不是该循环的局部变量,而是与for循环处在同样的作用域中。用let声明的变量是语句的局部变量
  • 条件表达式:一个条件表达式被用于确定每一次循环是否被执行。如果表达式的结果为true,则循环体statements将被执行。这个表达式是可选的。如果被忽略,则被认为永远为真。如果计算结果为false,那么执行流程将跳出循环
  • 循环后操作:每次循环体执行后都要执行的表达式。通常被用于更新或者自增计数器变量

上述循环控制参数之间使用分号;间隔开。

for循环语句工作原理

示例:

javascript 复制代码
<script>
			for(var i=1;i<5;i++)
			{
				console.log(i);
			}
</script>

运行结果

javascript 复制代码
1
2
3
4

怎么运行的?

  • 首先,声明一个变量i并赋值为1
  • 其次,如果i的值小于5,则执行循环体输出i值
  • 每次循环i的值都会增加1

在for循环中,三个表达式是可选的

javascript 复制代码
for( ; ; )
    {
	statements;
    }

使用for语句在没有初始化表达式的循环

javascript 复制代码
var j=1;
	for( ;j<10;j+=2)
	{
		console.log(j);
	}

输出

javascript 复制代码
1
3
5
7
9

for语句不使用条件的循环

条件表达式是可选的,如果省略条件表达式,则需要break语句来终止循环

javascript 复制代码
for(var x=1;  ;x+=2)
	{
	console.log(x);
	if(x>10){
			break;
		}
	}

输出

javascript 复制代码
1
3
5
7
9
11

中止循环

break语句提前终止整个循环,一般用于结果已经得到, 后续的循环不需要的时候可以使用(提高效率)

continue语句会终止当前本次循环,并立即继续下一次迭代。一般用于排除或者跳过某一个选项的时候

示例:break中止

javascript 复制代码
<script>
			var i=1;
			while(i<=5)
			{
				console.log(i);
				if(i === 3){
					break;
				}
				i++;
			}
	</script>

输出:

javascript 复制代码
1
2
3

示例:continue中止

javascript 复制代码
<script>
			var i=1;
			while(i<=5)
			{
				console.log(i);
				if(i === 3){
					continue
				}
				i++;
			}
</script>

输出

javascript 复制代码
1
2
4
5

循环实战

倒三角

javascript 复制代码
 // 外层打印几行
for (let i = 1; i <= 5; i++) {
    // 里层打印几个星星
    for (let j = 1; j <= i; j++) {
        document.write('★')
    }
    document.write('<br>')
}

九九乘法表

样式css

css 复制代码
div {
    display: inline-block;
    width: 100px;
    padding: 5px 10px;
    border: 1px solid pink;
    margin: 2px;
    border-radius: 5px;
    box-shadow: 2px 2px 2px rgba(255, 192, 203, 0.4);
    background-color: rgba(255, 192, 203, 0.1);
    text-align: center;
    color: hotpink;
}

js文件

javascript 复制代码
 // 外层打印几行
for (let i = 1; i <= 9; i++) {
    // 里层打印几个星星
    for (let j = 1; j <= i; j++) {
        // 只需要吧 ★ 换成  1 x 1 = 1   
        document.write(`
		<div> ${j} x ${i} = ${j * i} </div>
     `)
    }
    document.write('<br>')
}
相关推荐
举个栗子dhy几秒前
第一章、React + TypeScript + Webpack项目构建
前端·javascript·react.js
大杯咖啡4 分钟前
localStorage与sessionStorage的区别
前端·javascript
RaidenLiu16 分钟前
告别陷阱:精通Flutter Signals的生命周期、高级API与调试之道
前端·flutter·前端框架
非凡ghost16 分钟前
HWiNFO(专业系统信息检测工具)
前端·javascript·后端
非凡ghost19 分钟前
FireAlpaca(免费数字绘图软件)
前端·javascript·后端
非凡ghost25 分钟前
Sucrose Wallpaper Engine(动态壁纸管理工具)
前端·javascript·后端
拉不动的猪27 分钟前
为什么不建议项目里用延时器作为规定时间内的业务操作
前端·javascript·vue.js
该用户已不存在34 分钟前
Gemini CLI 扩展,把Nano Banana 搬到终端
前端·后端·ai编程
地方地方35 分钟前
前端踩坑记:解决图片与 Div 换行间隙的隐藏元凶
前端·javascript
炒米233338 分钟前
【Array】数组的方法
javascript