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>')
}
相关推荐
熊的猫1 小时前
JS 中的类型 & 类型判断 & 类型转换
前端·javascript·vue.js·chrome·react.js·前端框架·node.js
瑶琴AI前端1 小时前
uniapp组件实现省市区三级联动选择
java·前端·uni-app
会发光的猪。1 小时前
如何在vscode中安装git详细新手教程
前端·ide·git·vscode
别拿曾经看以后~2 小时前
【el-form】记一例好用的el-input输入框回车调接口和el-button按钮防重点击
javascript·vue.js·elementui
我要洋人死2 小时前
导航栏及下拉菜单的实现
前端·css·css3
川石课堂软件测试2 小时前
性能测试|docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台
运维·javascript·深度学习·jmeter·docker·容器·grafana
科技探秘人3 小时前
Chrome与火狐哪个浏览器的隐私追踪功能更好
前端·chrome
科技探秘人3 小时前
Chrome与傲游浏览器性能与功能的深度对比
前端·chrome
JerryXZR3 小时前
前端开发中ES6的技术细节二
前端·javascript·es6
七星静香3 小时前
laravel chunkById 分块查询 使用时的问题
java·前端·laravel