JavaScript 入门基础 - 流程控制(四)

news2024/11/16 22:57:11

JavaScript 流程控制 - 分支和循环


文章目录

  • JavaScript 流程控制 - 分支和循环
    • 1. 什么是流程控制
    • 2. 顺序流程控制
    • 3. 分支流程控制 之 if语句
      • 3.1 什么是分支结构
      • 3.2 if 语句
        • 3.2.1 if 语句基本理解
        • 3.2.2 if 语句执行流程
        • 3.2.3 if 语句案例
      • 3.3 if else语句(双分支语句)
        • 3.3.1 引言
        • 3.3.2 if else 语法基本理解
        • 3.3.3 判断闰年案例
      • 3.4 if else if 语句(多分支语句)
        • 3.4.1 if else if 语句基本理解
    • 4. 三元表达式
      • 4.1 三元表达式基本理解
      • 4.2 三元运算符案例
    • 5. switch语句
      • 5.1 switch语句基本理解
      • 5.2 switch语句注意事项
    • 6. switch语句和 if else if语句的区别
    • 7. 循环控制
      • 7.1 循环控制基本理解
      • 7.2 JS当中的循环
      • 7.3 for循环
        • 7.3.1 for循环基本理解
        • 7.3.2 for 循环的执行过程
        • 7.3.3 利用for循环执行不同的代码
        • 7.3.4 for循环案例
        • 7.3.5 for循环小结
      • 7.4 断点调试
        • 7.4.1 什么是断点调试
        • 7.4.2 断点调试方式
      • 7.5 while循环
        • 7.5.1 while循环基本理解
        • 7.5.2 while循环案例
      • 7.6 do while 循环
        • 7.6.1 do while 循环基本理解
      • 7.7 continue 关键字
      • 7.8 break 关键字


1. 什么是流程控制

在程序执行过程中,每一条代码执行的顺序对程序执行的结果有直接的影响,有时我们需要通过控制代码的执行顺序来实现我们所要执行的操作,这就是流程控制,简单来说就是控制代码的执行顺序,来达到影响执行结果的目的。

流程控制主要分为三种结构:

  • 顺序结构:按代码顺序一条条执行。
  • 分支结构:按照给定的条件进行判断,然后决定执行哪一句代码。
  • 循环结构:按照给定的条件进行判断,重复执行某一条代码。

在这里插入图片描述

2. 顺序流程控制

顺序流程控制就是按照代码的先后顺序依次执行,大多数代码都是这样执行的。

var age = 17;
age++;
console.log(age); // 程序按照顺序执行,结果为18

3. 分支流程控制 之 if语句

3.1 什么是分支结构

由上向下执行代码过程中,遇到条件进行判断,去执行不同分支的代码(执行代码多选一),从而得到不同的结果。

在js中有两种分支语句:

  • if 语句
  • switch 语句

3.2 if 语句

3.2.1 if 语句基本理解

if语句由 小括号()、条件表达式、大括号、执行语句构成:

if (条件表达式) {
	// 条件表达式为真时执行的语句
}

if 语句 的执行思路:如果条件表达式为(true),则执行大括号里面的 执行语句,如果条件表达式为(false),则不执行大括号里面的执行语句,去执行if 语句后面的代码。

if (12 > 5) {
	alert('我亦无他,唯手熟尔'); //12 > 5为真,执行大括号里面的代码
}

3.2.2 if 语句执行流程

在这里插入图片描述
先执行判断条件,为真则执行if 中的语句,为假则执行if 语句后面的其他语句

3.2.3 if 语句案例

进入网吧

  1. 弹出输入框让用户输入年龄,把年龄保存到变量中
  2. 使用 if 语句判断年龄是否大于18,大于则执行if 中的语句
var age = prompt('请输入你的年龄:');
if (age > 18) {
	alert('您的年龄大于18岁,可以进入网吧');
}

3.3 if else语句(双分支语句)

3.3.1 引言

从上面的进入网吧案例我们可以看出,当我们输入的年龄小于18,程序什么也不会执行,这是不完美的,在这里我们可以用到 if else 语句。

3.3.2 if else 语法基本理解

// 条件成立执行 if 里面的代码,否则执行else 里面的代码
if (条件表达式) {
	// (如果)条件成立执行的代码
} else {
	// 否则执行的代码
}

执行思路:如果条件表达式为真,则执行if 语句中的代码,否则就执行else语句当中的代码,if 里面的语句和 else里面的语句只能执行一个(二选一),现在我们来完善一下进入网吧案例:

var age = prompt('请输入你的年龄:');
if (age > 18) {
	alert('您的年龄大于18岁,可以进入网吧');
} else {
	alert('对不起,你还未成年');
}

3.3.3 判断闰年案例

接收用户输入的年份,判断是闰年还是平年

基本思路:

  1. 闰年:能被4整除且不能整除100的年份,或者能够被400整除的年份
  2. 弹出输入框,让用户输入年份,然后保存到变量中
  3. 用if else 语句判断是闰年还是平年

实现代码:

var year = prompt('请输入你要判断的年份:');
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
	alert('你输入的年份是闰年');
} else {
	alert('你输入的年份是平年');
}

3.4 if else if 语句(多分支语句)

3.4.1 if else if 语句基本理解

多分支语句就是利用多个条件来选择不同的语句执行得到不同的结果,是一种多选一的过程。语法规范如下:

if (条件表达式1) {
	// 执行语句1;
} else if (条件表达式2) {
	// 执行语句2;
} else if (条件表达式3) {
	// 执行语句3;
} else {
	// 最后要执行的语句4;
}

在这里插入图片描述
执行思路:如果条件表达式1成立,则执行语句1,否则判断条件表达式2,如果条件表达式2成立,则执行语句2,不成立则判断条件表达式3,成立则执行表达式3,如果上面所有条件表达式都不成立,则执行else里面的语句

注意:

  • 多分支语句是一个多选一的过程,最终只有一个语句能执行
  • else if 里面的条件是可以有多个的

4. 三元表达式

4.1 三元表达式基本理解

三元表达式:是由三元运算符组成的式子,语法规范如下:

条件表达式 ?表达式1 :表达式2

执行思路:如果条件表达式为真,则返回表达式1的值,如果条件表达式结果为假,则返回表达式2的值,比如:

var age = 18;
var result = age > 18 ? '是的' : '不是的'; // 表达式会返回一个值
console.log(result);

4.2 三元运算符案例

数字补零:要求用户输入0 ~ 30 之间的任一个数字,如果数字小于10,则在数字前面补零,大于10则不做操作,具体代码如下:

var day = prompt('请输入0 ~ 30 之间任何一个数字:'); // 定义一个变量接收用户输入的值
var result = day < 10 ? 0 + day : day; // 利用三元运算符补零
alert(result); // 输出结果

5. switch语句

5.1 switch语句基本理解

switch语句也是一种多分支语句,通过不同的条件来执行不同的代码,如要正对变量设定一系列的特定值可以用到switch语句,具体语法规范如下:

switch(表达式) {
	case value1:	// case 是案例,实例,选项的意思
		执行语句1;
		break;
	case value2:
		执行语句2;
		break;	
	...
	default:
		最后的执行语句; // 都没有匹配上所要执行的语句
}

执行思路:利用表达式返回的值和 case 选项后面的值相匹配,如果匹配的上,则执行 case 里面的语句,如果都不匹配,则执行 default 里面的语句。

switch(1) { // 影响结果的是switch里面表达式返回的值
	case 1:
		alert('这是1呀');
		break;
	case 2:
		alert('这是2呀');
		break;
	case 3:
		alert('这是3呀');
		break;
	default:
		alert('啊哦,都不是');
}

5.2 switch语句注意事项

  1. 开发中,switch括号里面表达式我们往往写成变量
  2. switch括号里面变量的值和 case 先匹配是指 他们全等,必须数据类型和值都一致才能称为相匹配。
  3. break是指跳出当前语句,如果case中没有 break 则不会跳出 switch 语句,会继续执行下一个 case 。

6. switch语句和 if else if语句的区别

  • switch…case语句通常判断确定值的情况,而 if…else语句更加灵活,可以判断范围(比如:大于、小于、等于某个范围)。
  • switch语句可直接执行到满足条件的语句,效率更高,而if…else语句有几种条件就要判断多少次。
  • 分支较少时使用if…else语句执行效率更高。
  • 但分支较多时,switch语句的执行效率比较高,而且结构更加清晰。

7. 循环控制

7.1 循环控制基本理解

循环的目的:在开发中,我们需要重复大量的执行某一些代码,即对一些代码做有规律的重复操作。

for (var i = 1; i < 1000; i++) {
	console.log('加油,你是最棒的');
}

7.2 JS当中的循环

在js中有三种类型的循环语句:

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

7.3 for循环

7.3.1 for循环基本理解

在程序中被重复执行的语句被称之为循环体,能否继续重复执行,取决于循环的终止条件,由循环体及循环终止条件组成的语句,称之为循环语句,for循环主要把结构循环若干次,它是根据计数来决定循环次数的,主要语法结构如下:

for (初始化变量; 条件表达式; 操作表达式 ) {
	// 循环体
}
  • 初始化变量:就是用 var 声明一个变量作为计数器使用。
  • 条件表达式:就是用来决定每一次循环继续的条件,也就是终止条件。
  • 操作表达式:对计数器实行更新的操作,每循环一次对计数器进行更新(递增或者递减)

加一百次油代码实例:

for (var i = 1; i <= 100; i++) {
	console.log('加油');
}

7.3.2 for 循环的执行过程

我们拿上面的实例来理清for循环的执行过程:

  1. 首先执行for里面的计数器变量 var i = 1,这句话在for里面只执行一次。
  2. 判断 i <= 100 是否满足条件,如果满足条件就执行循环体,不满足就退出for循环。
  3. 执行完循环体最后去执行 i++ ,i++是单独的代码,表示计数器递增,它执行完表示一轮循环结束。
  4. 接着去执行 i <= 100 ,如果满足条件,就去执行循环体,不满足则退出循环,第二轮循环开始。

7.3.3 利用for循环执行不同的代码

我们可以利用for循环计数器 i 执行不同代码,因为 i 每次执行循环后都会变化:

for (var i = 1; i <= 100; i++) {
	console.log('第' + i + '天,太阳东升西落');
}

7.3.4 for循环案例

求1 ~ 100 之间的整数累加和:我们需要利用计数器循环100次,再利用一个变量存储结果,初始值为0

var result = 0;
for (var i = 1; i <= 100; i++) {
	result = result + i;
}
console.log(result);

打印九九乘法表:利用双重for循环打印九九乘法表

  • 一共9行,每行个数不相同
  • 外层for循环控制行数i,循环9次,打印9行
  • 内层for循环控制每行公式j
  • 核心算法:每一行的公式个数正好和行数一致:j <= i
  • 每行打印完毕重新换行
var str = '';
for (var i = 1; i <= 9; i++) {		// 外层循环控制行数
	for (var j = 1; j <= i; j++) {		// 内层循环控制每一行的个数
		str += j + 'x' + i + '=' + i * j + '\t';
	}
	str += '\n';
}
console.log(str);

输出结果如下:
在这里插入图片描述

7.3.5 for循环小结

  • for循环可以重复执行某些代码
  • 可以通过for循环计数器执行不同的代码
  • for循环可以重复执行某些操作
  • 双重for循环可以做更多的、更加好看的效果
  • 双重for循环外层循环一次,那么内层for循环全部执行
  • for循环次数直接和循环条件和数字相挂钩
  • 自己举一反三,分析核心算法,学会它的执行过程,经常总结,做一些案例

7.4 断点调试

7.4.1 什么是断点调试

断点调试是指在自己程序的某一行设置断点,调试时,程序运行到这一行会停住,你可以以一步步往下调试,过程中可以看各个变量当前的值,调试到出错的代码会停住,并显示错误。

7.4.2 断点调试方式

断点调试是非常重要的,它可以帮我们观察程序运行的过程,找出里面存在的bug,下面分享几个简单的调试常用按钮:

  • 浏览器按F12 ——> sources ——> 找到要调试的文件 ——> 在程序的某一行设置断点
  • Watch监视:通过watch可以监视变量值的变化。
  • F11:让程序单步执行,观察watch中变量值的变化。
    在这里插入图片描述

7.5 while循环

7.5.1 while循环基本理解

while循环可以在条件表达式为真时,循环执行指定的一段代码,知道条件表达式不为真结束循环。语法结构如下:

while (条件表达式) {
	// 循环体代码
}

执行思路:

  • 先执行表达式,为真则执行循环体代码,为假则退出循环,执行后面的代码。
  • 循环体代码执行完毕后,程序会继续判断条件表达式,如果仍为真,则继续执行循环体代码,直到条件表达式为假,整个循环过程才会结束。
var num = 1;
while (num <= 100) {
	console.log('加油');
	num++; // 实现计数器更新,防止死循环
}

注意:while循环也有计数器,初始化变量,也应该有操作表达式,实现计数器的更新,防止死循环。

7.5.2 while循环案例

弹出提示框:你爱js吗? 如果输入我爱,就提示结束,否则一致询问。实现代码如下:

var question = prompt('你爱js吗?');
while (question !== '我爱') {
	question = prompt('你爱js吗?');
}
alert('我也爱js');

7.6 do while 循环

7.6.1 do while 循环基本理解

do while循环其实是 while 语句的一个变体,该循环会先执行一个代码块,然后在对条件表达式进行判断,如果为真,则执行循环体,否则退出循环,基本语法如下:

do {
	// 循环体
} while (条件表达式)

执行思路:跟while循环不同的是 do while 先执行一次循环体,再判断条件表达式,如果为真,则继续执行循环体,为假则退出循环。

var i = 1;
do {
	console.log('加油');
	i++;
} while(i <= 100);

注意:do while 循环语句先执行一次循环体再进行判断,这说明它至少会执行一次循环体。

7.7 continue 关键字

continue 用于立即跳出本次循环,继续下一次循环,例如:吃5个青枣,第2个有虫子扔掉,继续吃第3个第 4个第5个青枣,代码演示:

for (var i = 1; i <= 5; i++) {
	if (i  == 2) {
		continue;
	}
	console.log('我吃第' + i + '个青枣');
}

7.8 break 关键字

break 关键字用于立即跳出整个循环(表示循环结束),例如:吃5个青枣,发现第2个有虫子,其余的都不吃了。代码演示:

for (var i = 1; i <= 5; i++) {
	if (i  == 2) {
		break;
	}
	console.log('我吃第' + i + '个青枣');
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/132351.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Threejs实现鼠标点击人物行走/镜头跟随人物移动/鼠标点击动画/游戏第三人称/行走动作

1&#xff0c;功能介绍 Threejs获取鼠标点击位置、实现鼠标点击人物行走、人物头顶显示名称标签、镜头跟随人物移动并且镜头围绕人物旋转&#xff0c;类似游戏中第三人称、鼠标点击位置有动画效果&#xff0c;如下效果图 2&#xff0c;功能实现 获取鼠标点击位置&#xff0c;…

【Linux】进程间通信 - 匿名/命名管道与System V共享内存

目录 前言 一.管道 0.什么是管道 1).管道的概念 2).管道的本质 3).管道指令: "|" 1.匿名管道 1).如何创建匿名管道 2).如何使用匿名管道进行通信 3).匿名管道的特点总结 2.命名管道 0).指令级的命名管道的通信 1).如何在编程时创建命名管道 2).如何在…

你好2023-使用msys64 openssl 制作QSslSocket实验所需证书

2023年开始了&#xff0c;第一篇&#xff0c;记录最近帮朋友制作QSslSocket所需证书的过程。 使用传统的TCP连接依旧是很多工业软件的常见通信方法。但如果恰好不希望别人通过抓包等方法研究上位机和控制器模块之间的协议格式&#xff0c;那使用SSL连接是一种掩耳盗铃的好办法&…

Pyinstaller - 你的“神”队友

哈哈&#xff01;今天是我在2023年发布的第一篇文章呀&#xff01; 这两天&#xff0c;我在做一个爬虫项目。因为我做好后准备给我的朋友看看&#xff0c;但我朋友没有 Python 环境。所以&#xff0c;只好想办法把 .py 打包成 .exe 。 在网上搜了一下&#xff0c;发现目前相对…

设计模式 ——工厂模式

前言 有一些重要的设计原则在开篇和大家分享下&#xff0c;这些原则将贯通全文&#xff1a; 面向接口编程&#xff0c;而不是面向实现。这个很重要&#xff0c;也是优雅的、可扩展的代码的第一步&#xff0c;这就不需要多说了吧。 职责单一原则。每个类都应该只有一个单一的功…

第三十一讲:神州路由器策略路由的配置

从局域网去往广域网的流量有时需要进行分流&#xff0c;即区别了不同用户又进行了负载分担&#xff0c;有时这种目标是通过对不同的源地址进行区别对待完成的&#xff0c;通过策略路由的方法可以解决此问题。 实验拓扑图如下所示 R1 R2 R3 F0/0 1.1.3.1/24 F0/0 1.1.3.2…

【AcWing每日一题】4261. 孤独的照片

Farmer John 最近购入了 N 头新的奶牛&#xff0c;每头奶牛的品种是更赛牛&#xff08;Guernsey&#xff09;或荷斯坦牛&#xff08;Holstein&#xff09;之一。 奶牛目前排成一排&#xff0c;Farmer John 想要为每个连续不少于三头奶牛的序列拍摄一张照片。 然而&#xff0c…

java多线程(11):线程协作

1 线程通信 应用场景 : 生产者和消费者问题 假设仓库中只能存放一件产品 , 生产者将生产出来的产品放入仓库 , 消费者将仓库中产品取走消费 如果仓库中没有产品 , 则生产者将产品放入仓库 , 否则停止生产并等待 , 直到仓库中的产品被消费者取走为止 如果仓库中放有产品 ,…

Chrome Extension 基础篇

Extensions are software programs, built on web technologies (such as HTML, CSS, and JavaScript) that enable users to customize the Chrome browsing experience. 扩展程序是基于 Web 技术&#xff08;例如 HTML、CSS 和 JavaScript&#xff09;构建的软件程序&#xf…

C语言递归

递归指的是在函数的定义中使用函数自身的方法。 举个例子&#xff1a; 从前有座山&#xff0c;山里有座庙&#xff0c;庙里有个老和尚&#xff0c;正在给小和尚讲故事呢&#xff01;故事是什么呢&#xff1f;"从前有座山&#xff0c;山里有座庙&#xff0c;庙里有个老和尚…

redis的安装

1.Redis是基于C语言编写的&#xff0c;因此首先需要安装Redis所需要的gcc依赖&#xff1a; yum install -y gcc tcl2.上传安装包并解压 tar -xzf redis-6.2.6.tar.gz3.解压后&#xff0c;进入redis目录 cd redis-6.2.64.运行编译命令 make && make install如果没有…

3_运行时数据区概述及线程

前言 本节主要讲的是运行时数据区&#xff0c;也就是下图这部分&#xff0c;它是在类加载完成后的阶段 当我们通过前面的&#xff1a;类的加载-> 验证 -> 准备 -> 解析 -> 初始化 这几个阶段完成后&#xff0c;就会用到执行引擎对我们的类进行使用&#xff0c;同时…

56. 数据增广 / 图像增广

1. CES上的真实故事 2. 数据增强 增加一个已有数据集&#xff0c;使得有更多的多样性 在语言里加入各种不同的背景噪音改变图片的颜色和形状 例如&#xff0c;我们可以以不同的方式裁剪图像&#xff0c;使感兴趣的对象出现在不同的位置&#xff0c;减少模型对于对象出现位置…

Linux系统如何添加磁盘分区基本情况

Linux系统如何添加磁盘&&分区基本情况 原理介绍 Linux来说无论有几个分区&#xff0c;分给哪一目录使用&#xff0c;它归根结底就只有一个根目录&#xff0c;一个独立且唯一的文件结构&#xff0c;Linux中每个分区都是用来组成整个文件系统的一部分。 Linux采用了一种…

JavaScript-DOM和BOM详解

文章目录DOM 和 BOM1. DOM2. BOM2.1 BOM 简介2.2 分类2.3 语法1) Navigator 当前浏览器2&#xff09;Histry 向前或向后翻页3&#xff09;Location 地址栏的信息DOM 和 BOM 1. DOM 浏览器已经为我们提供了文档节点的对象&#xff0c;这个对象是 window 对象的属性可以在页面中…

Netconf协议讲解

目录 什么是Netconf 为什么要提出Netconf 数据的类别 传统网络配置协议 Netconf配置协议 Netconf协议架构 安全传输层 消息层 操作层 内容层 Netconf配置设备流程 通过Python进行Netconf配置 什么是Netconf NETCONF&#xff08;Network Configuration Protocol&…

Unity运行时代码编辑插件介绍-InGame Code Editor-IDE类文本编辑器

因为某些原因,需要在Runtime显示一下代码,也方便做样式设计 所以找到了这个插件 特色什么的都不展开说了,开源的代码都是好代码,样式什么的就不能要求过多 基础使用方法 导入TextMeshPro 基于这个插件的,所以需要先从Package Manager先下载TextMeshPro 创建编辑器 T…

【SpringBoot应用篇】SpringBoot集成j2cache二级缓存框架

【SpringBoot应用篇】SpringBoot集成j2cache二级缓存框架j2cache介绍j2cache入门使用pomapplication.ymlcaffeine.propertiesCacheTestController启动类j2cache介绍 j2cache是OSChina(开源中国)目前正在使用的两级缓存框架。 j2cache的两级缓存结构&#xff1a; L1&#xff…

《悠悠岁月》悠悠岁月,浅藏浅忆,且行且珍惜

《悠悠岁月》悠悠岁月&#xff0c;浅藏浅忆&#xff0c;且行且珍惜 安妮埃尔诺&#xff0c;法国当代著名女作家&#xff0c;2022年获诺贝尔文学奖。埃尔诺从1974年开始创作&#xff0c;至今已出版了约十五部作品。《悠悠岁月》这部历经二十余年思考和推敲的杰作&#xff0c;使她…

Apache Shiro(一)

1.Apache Shiro Apache Shiro Reference Documentation | Apache Shiro Apache Shiro 是一个功能强大且易于使用的 Java 安全(权限)框架。Shiro 可以完 成&#xff1a;认证、授权、加密、会话管理、与 Web 集成、缓存 等。借助 Shiro 您可以快速轻松 地保护任何应用程序——从最…