JavaScript流程控制详解之顺序结构和选择结构

news2024/11/15 11:06:11

流程控制

流程控制,指的是控制程序按照怎样的顺序执行

在JavaScript中,共有3种流程控制方式

  • 顺序结构
  • 选择结构
  • 循环结构

顺序结构

在JavaScript中,顺序结构是最基本的结构,所谓的顺序结构,指的是代码按照从上到下、从左到右的顺序执行

JavaScript执行的顺序结构如图所示
在这里插入图片描述

示例

<script>
		var str="hello";
		var str1=" world";
		var str2=str+str1;
		console.log(str2);
</script>

运行结果

hello world

按照从上到下、从左到右的顺序,JavaScript会按照以下顺序执行

  1. 执行 var str=“hello”;
  2. 执行 var str1=" world";
  3. 执行 var str2=str+str1;
  4. 最后执行console.log(str2);

一般情况下,JavaScript引擎就是按照顺序结构来执行的。但有时单独使用顺序结构可能无法解决问题,所以就引用了选择结构和循环结构

选择结构

在JavaScript中,选择结构指的是根据条件判断是否为真假来决定执行哪一段代码。

选择结构有:

  1. if分支语句
  2. switch语句

if 单向选择

语法形式:

if(condition) {
  // 满足条件要执行的语句
     statement;
}

怎么运行的?

  • condition可以是一个值或一个表达式,它的计算结果为布尔值。

  • condition值结果是布尔值,为 true 时,则会执行大括号中{}内部的代码;如果值结果为false,则直接跳过大括号{}内部的代码,然后按照顺序执行后面的程序

  • 如果condition计算结果若不是布尔类型时,JavaScript引擎会自动调用Boolean()函数将其结果隐式转换为布尔值。

  • 如果大括号只有一个语句,大括号可以省略

if单向选择工作原理如图
在这里插入图片描述

示例:

<script>
		//单向选择if
			if(true)
			{
				console.log("条件结果为true就执行此代码");
			}
		//1.如果大括号内只有一个语句,大括号可省略
		if(true)
		console.log("省略大括号");
		//2.条件为true
		if(5>2)
		{
			console.log("5大于2");
		}
		if(10=="10")
		{
			console.log("10=='10'");
		}
		//3.条件为false
		if(10==="10")
		{
			console.log("10==='10'为true时执行此代码");
		}
		console.log("10不等于'10'时执行此代码");
		//4. 除了0 所有的数字都为真
		if(0){
			console.log("数字0为true时执行此代码");
		}
		console.log("0为false");
		//5.除了 '' 所有的字符串都为真 true
		if("真")
		{
			console.log("字符串为真");
		}
		if("")
		{
			console.log("执行此代码");
		}
		console.log("空字符串为false");
		</script>

运行结果

条件结果为true就执行此代码
省略大括号
5大于2
10=='10'
10不等于'10'时执行此代码
0false
字符串为真
空字符串为false

条件表达式结果为false的值

  • false

  • undefined

  • null

  • 除了0 所有的数字都为真

  • NaN

  • 除了 ‘’ 所有的字符串都为真 true

if 双向选择

如果有两个条件的时候,可以使用 if else 双分支语句。当一个逻辑条件为真,用if语句来执行一个语句,当这个条件为假时,使用可选择的else从句来执行这个语句
语法形式:

if (condition){
  // 满足条件要执行的语句
    statement1;
} else {
  // 不满足条件要执行的语句
    statement2;
}

怎么运行的?

  • condition可以是任何返回结果为true或false的表达式。

  • 如果condition计算结果返回的是true,statement1语句会被执行;否则,statement2被执行。如果计算结果为非布尔值,则该if…else语句会将其转换为布尔值

  • statement1和statement2可以是任何语句,甚至还可以将一个if语句嵌套其中。

if双向选择工作原理如图
在这里插入图片描述

示例

<script>
	//1.保存信息
	var usname=prompt("请输入你的用户名");
	var pwd=prompt("请输入你的密码");
	//2.判断条件
	if(usname === "tom" && pwd === "123456"){
		alert("恭喜登录成功");
		}
	else{
		alert("用户名或密码输入错误");
		}
</script>

运行结果
在这里插入图片描述

if 多向选择

if 多向选择,就是在双向选择的基础上增加单个或多个选择分支

语法形式:

if(condition1)
 {
 // 满足条件要执行的语句
     statement1;
 }   
else if(condition2)
{
    // 满足条件要执行的语句
     statement2;
}
 else if(condition3)
 {
      // 满足条件要执行的语句
     statement3;
 }
...
else if(conditionn)
{
	// 满足条件要执行的语句
     statement n;
}
else{
    //当以上条件都不满足时就执行此代码
}

怎么运行的?

  • if…else if…else语句会从上到下进行检查条件,如果条件为true则执行相应的语句
  • if…else if…else语句中有condition一旦条件为true,该语句就会停止检查其余condition计算结果。例如,如果condition2计算结果为true,则只会执行这语句,不会计算其他condition,执行完毕condition2内的statement2代码则会直接退出if…else if…else选择结构语句
  • 如果所有条件均为false,则该if…else if…else语句执行分支中的else语句中的代码

if 多向选择工作原理如下图所示
在这里插入图片描述

示例:

<script>
			var grade=prompt("请输入你的成绩");
			if(grade>=90)
			{
				alert("你的成绩为优秀");
			}
			else if(grade>=80)
			{
				alert("你的成绩为良好");
			}
			else if(grade>=70)
			{
				alsert("你的成绩为中等");
			}
			else if(grade>=60)
			 {
				alert("你的成绩为合格");
			 }
			 else{
				 alert("你的成绩为不合格");
			 }
</script>

运行结果
在这里插入图片描述

对于多向选择,JavaScript会从第一个if条件开始判断,如果第一个不满足,则会判断第二个if条件;如果还是不满足,则判断第三个if条件,直到满足条件为止。一旦满足,就会跳出整个if结构

switch语句

switch语句会根据条件判断的计算结果,将其结果与case值进行比较,然后执行与匹配值关联的语句case

语法形式:

switch(expression)
   {
       case 取值1:
          statement1;[break;]
       case 取值1:
          statement1;[break;]
        .....
        case 取值n:
           statementn;[break;]
       	default:
           statement;
   }

怎么运行的

  • 首先,计算switch选择结构中的expression结果

  • 其次,将表达式的结果与从上到下的case分支中的取值1、取值2,…进行比较。switch语句使用严格比较(===

  • 第三,执行case分支中的语句,其中expression表达式的结果等于case关键字后面的值。break语句退出switch语句。如果跳过break语句,代码执行会从原始case分支进入下一分支。如果表达式中的结果不严格等于任何值,switch语句将执行default分支中的语句

  • 只要找到匹配项,switch语句就会停止将表达式的结果与剩余的case值进行比较

switch语句结构工作原理
在这里插入图片描述

注意:

  1. switch case语句一般用于等值判断, if适合于区间判断
  2. switchcase一般需要配合break关键字使用 没有break会造成case穿透
  3. if 多分支语句开发要比switch更重要,使用也更多

示例:

<script>
			var day =5;
			var dayName;
			switch (day) {
			case 7:
				dayName = '今天是星期日';
				break;
			  case 1:
			    dayName = '今天是星期一';
			    break;
			  case 2:
			    dayName = '今天是星期二';
			    break;
			  case 3:
			    dayName = '今天是星期三';
			    break;
			  case 4:
			    dayName = '今天是星期四';
			    break;
			  case 5:
			    dayName = '今天是星期五';
			    break;
			  case 6:
			    dayName = '今天是星期六';
			    break;
			  default:
			    dayName = '输入错误';
			}
		alert(dayName);
		</script>

运行结果

今天是星期五

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

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

相关文章

【python数据分析基础】—dataframe中index的相关操作(添加、修改index的列名、修改index索引值等)

文章目录 前言一、添加、修改index的列名二、修改index索引值 前言 本文主要讲dataframe结构中index的相关操作&#xff0c;index相当于是数据表的行。 一、添加、修改index的列名 新建一个dataframe表&#xff0c;我们可以自定义index的值&#xff0c;如下&#xff1a; imp…

Webpack源码浅析

webpack启动方式 webpack有两种启动方式&#xff1a; 通过webpack-cli脚手架来启动&#xff0c;即可以在Terminal终端直接运行&#xff1b; webpack ./debug/index.js --config ./debug/webpack.config.js通过require(webpack)引入包的方式执行&#xff1b;其实第一种方式最终…

sqli-labs-master靶场训练笔记(38-53|boss战)

2024.2.4 level-38 &#xff08;堆叠注入&#xff09; 这题乍一看感觉又是来卖萌的&#xff0c;这不是和level-1一模一样吗 然后仔细看了一下源代码&#xff0c;根据 mysqli_multi_query 猜测这题的本意应该是堆叠注入 mysqli_multi_query() 是 PHP 中用于执行多个 SQL 查…

Sysbench 性能测试(小白快速上手)

文末有惊喜哦 &#xff01; Sysbench 介绍 Sysbench 是一个在Linux系统上进行性能测试和基准测试的工具。它可以用于评估计算机系统的各种性能指标&#xff0c;如 CPU 性能、内存性能、文件 I/O性 能和数据库性能等。Sysbench 提供了多种测试模式和选项&#xff0c;可以帮助用户…

感悟笔记——2024年2月5日

今日阅读了一篇挺有深度的文章&#xff0c;主要阐述进入职场后的大部分人&#xff0c;是怎么逐渐沦为螺丝钉的?即使起点巨高的优等生&#xff0c;也不可避免。文章指路&#xff1a; 「优等生思维」正在将你变成「螺丝钉」和「老黄牛」从小到大&#xff0c;我一直都是那个「别…

EMC测试报告怎么看 PK、QP、AV

EMC测试报告怎么看 报告中的字母辐射报告1辐射报告2 测试条件 报告中的字母 1.PK.PEAK&#xff0c;是指峰值&#xff08;单位时间内的最高值&#xff09;&#xff1b; 2.QP&#xff08;QUASI-PEAK)是指准峰值&#xff08;单位时间内的平均值&#xff09;&#xff1b; 3.AV(AVE…

数据采集接口分类:数据采集、数据的采集有哪些?

中国的人工智能会面临着前所未有的发展机遇&#xff0c;她也将会以真正解决人类钢需载入史册&#xff0c;我们也期待着在天津跟在座的各位合作伙伴共同努力&#xff0c;真正的用人工智能建设美好世界。 API接口数据采集 主流电商数据采集 一、 什么是数据采集 确立一个算法模…

算法-2-异或运算

按位异或&#xff1a;相同为0&#xff0c;不同为1 异或运算性质 1&#xff09;异或运算就是无进位相加&#xff08;ab写二进制形式每位相加时不进位&#xff09; 2&#xff09;异或运算满足交换律、结合律&#xff0c;也就是同一批数字&#xff0c;不管异或顺序是什么&#…

【精选】java继承进阶,子类继承父类(内存图、内存分析工具)

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏…

5年前端仔的2023年终总结

突然发现已经有好几个月没有写过博客总结过什么&#xff0c;小小辩解一下&#xff0c;其实并不是笔者停止的学习和总结&#xff0c;随着在前端这个行业的逐年深入&#xff0c;渐渐的很多收获不再是像之前简单的技术点的确定性描述讲解了&#xff0c;而是某个领域的知识体系的串…

计算机服务器中了locked勒索病毒怎么处理,locked勒索病毒解密数据恢复

网络技术的不断发展&#xff0c;为企业的生产生活提供了极大便利&#xff0c;但也为网络安全带来严重威胁。近期&#xff0c;云天数据恢复中心接到某集团企业的求助&#xff0c;企业的计算机服务器遭到了locked勒索病毒攻击&#xff0c;导致企业系统内部的金蝶账套全部被加密&a…

鸿蒙踩坑合集

各位网络中的小伙们&#xff0c;关于鸿蒙的踩坑陆陆续续收集中&#xff0c;本文章会持续更新&#xff0c;希望对您有所帮助 1、预览视图无法正常加载 重新编译项目&#xff0c;点击刷新按钮&#xff0c;控制台提示Build task failed. Open the Run window to view details. 解…

生物地理学算法

生物地理学优化算法 生物地理学优化算法&#xff08;biogeography-based optimization,BBO&#xff09;源于生物地理学理论&#xff0c;通过模仿栖息地之间物种迁移和变异对优化问题进行求解&#xff0c;由Simon于2008年提出。 BBO算法由一群可行解组成&#xff0c;这些可行解…

港口起重数字化解决方案:PreMaint智能化引领未来

在面对日益增加的货轮和集装箱需求的背景下&#xff0c;港口码头迫切需要高效、智能的解决方案来优化起重设备运行&#xff0c;提高生产效率。数字化技术在港口起重领域的应用&#xff0c;尤其是仿真和数据分析&#xff0c;成为解决这些挑战的重要工具。而PreMaint智能化系统的…

text-generation-webui搭建大模型运行环境与踩坑记录

text-generation-webui搭建大模型运行环境 text-generation-webui环境初始化准备模型启动项目Bug说明降低版本启动项目 text-generation-webui text-generation-webui是一个基于Gradio的LLM Web UI开源项目&#xff0c;可以利用其快速搭建部署各种大模型环境。 环境初始化 下载…

【芯片设计- RTL 数字逻辑设计入门 7 -- 同步复位与异步复位详细介绍】

文章目录 复位的类型和划分同步复位综合后电路优缺点 异步复位优缺点 异步复位的时序分析&#xff08;recovery time/removal time&#xff09;异步复位&#xff0c;同步释放综合后电路优缺点 转自&#xff1a;https://blog.csdn.net/qq_40281783/article/details/128969188 复…

2024三掌柜赠书活动第九期:Node.js从基础到项目实践(视频教学版)

目录 前言Node.js从基础到项目实践关于《Node.js从基础到项目实践(视频教学版)》编辑推荐内容简介作者简介图书目录书中前言/序言《Node.js从基础到项目实践(视频教学版)》全书速览结束语 前言 随着Web应用的快速发展&#xff0c;Node.js作为一种强大的JavaScript运行时环境&…

unity实现第一人称和第三人称

在角色设置两个挂载点&#xff0c;第一人称时&#xff0c;相机放在eys上面&#xff0c;切换第三人称时&#xff0c;放置到3rd节点上面&#xff0c;调整节点位置&#xff0c;达到期望效果 代码 void ThirdView(){Debug.Log("切换到第三人称");camera.SetParent(third…

闲聊电脑(5)装个 Windows(一)

​夜深人静&#xff0c;万籁俱寂&#xff0c;老郭趴在电脑桌上打盹&#xff0c;桌子上的小黄鸭和桌子旁的冰箱又开始窃窃私语…… 小黄鸭&#xff1a;冰箱大哥&#xff0c;上次说到硬盘分区和格式化&#xff0c;弄完之后&#xff0c;就该装系统了吧&#xff1f; 冰箱&#x…

AnimateDiffusion文字生成图片--入门

AnimateDiffusion文字生成图片--入门 1. 安装2. 插件2.1 汉化插件2.2 中文提示词插件2.3 模型下载插件2.4 模型下载2.5 c站helper插件2.6 c站秘钥 3. 模型4. 总结 gitio: https://a18792721831.github.io/ 下面基本上所有的操作都需要访问外网&#xff0c;请自行解决外网。 1. …