【68】JS(4)——表达式和语句②流程控制语句(1)条件分支语句
本篇学习目标:
1.掌握各个条件分支语句的用法;
2.理解常见案例实现思路。
目录
- 一、if 语句
- 1. 介绍
- 2. 语法
- 3. 注意事项
- (1)实现选择功能
- (2)殊途同归
- (3)不建议省略大括号
- (4)可以不写 else 分
- 4. 案例
- 二、多分支 if 语句
- 1. 介绍
- 2. 语法
- 3. 注意事项
- (1) else 分支只能有一个,必须出现在最后,可以省略
- (2) "跳楼现象"
- 4. 案例
- 三、if 语句嵌套
- 1.介绍
- 2.案例
- 四、三元表达式
- 1.介绍
- 2.语法
- (1)布尔表达式
- (2)true_value
- (3) false_value
- 3.优点
- (1)结构更加简单
- (2)可以赋值给一个变量
- 4.案例
- 五、switch 语句
- 1.介绍
- 2.语法
- 3.运行机制
- (1)表达式→结果
- (2)匹配
- (3)执行
- 4.案例1
- 5. 注意事项
- (1) default 可以不写
- (2) break灵活处理
- 6.案例2
- 六、总结
一、if 语句
1. 介绍
- if 语句是最常用的条件分支语句;
- 作用:通过某个指定的判断条件,决定走哪个分支的代码。
2. 语法
<script>if (condition expression) {statement1;} else {statement2;}
</script>
condition expression:条件表达式,可以是任意的代码或者表达式,参与程序过程都会强制得到一个布尔值执行结果。(表达式,js 中遇到任何表达式都会先计算出一个结果然后才能继续参与程序。)
statement:结构体,js 中可以用
{}
包括一行到多行语句,这些语句整体组成了一个结构体,结构体中的语句要执行就都执行,要不执行就都不执行。if
关键字:如果;else
关键字:否则;总结:如果条件表达式为真
true
,执行 statement1,否则执行statement2。
3. 注意事项
(1)实现选择功能
- if 语句可以实现选择的功能,两个分支可以选择一个执行,不会都执行。
(2)殊途同归
- if 语句能够控制自己内部的流程,但是不论走哪个分支,结束后都要继续执行 if 语句后面的其他语句,叫做殊途同归现象。
<script>//if语句殊途同归现象,举例var a ;var s = prompt("请输入一个整数","100");if (s >= 60) {a = s;} else {a = 60;}alert("等级为"+a); //最后都会继续执行这个语句,殊途同归
</script>
(3)不建议省略大括号
- if 语句后面的结构体如果是单行语句组成,可以省略
{}
不写。但是不建议省略大括号,容易出现程序错误。
<script>var a ;var s = prompt("请输入一个整数","100");if (s >= 60) a = s;else a = 60;alert("等级为"+a);
</script>
(4)可以不写 else 分
- if 语句可以不写 else 分支,表示条件成立就执行后面的结构体,如果条件不成立,直接跳出 if 语句不执行。
<script>var a ;var s = prompt("请输入一个整数","100");if (s >= 60) {a = s;alert("等级为"+a);}</script>
4. 案例
用if语句,让用户输入考试成绩,反馈其是否及格。
<script>var testScores = prompt("请输入您的考试成绩","60");if (testScores >= 60) {alert("恭喜您,及格了");} else {alert("很遗憾没有及格,请继续加油!");}</script>
二、多分支 if 语句
1. 介绍
- 包含多个判断条件,对应多个分支;
- 语法:
if……else if……else if……else……
- 如果……否则如果……否则如果…… 否则……
2. 语法
<script>if (条件1) {满足条件1,执行的结构体} else if (条件2) {不满足条件1,满足条件2,执行的结构体} else if (条件3) {不满足条件1/2,满足条件3,执行的结构体} else {不满足前面所有条件,执行的结构体}
</script>
3. 注意事项
(1) else 分支只能有一个,必须出现在最后,可以省略
- 多分支 if 语句中可以有多个 else if 的分支,但是 else 分支只能有一个,必须出现在最后,作为备用的选项,而且 else 也可以省略不写,表示前面条件如果都不满足,直接跳出不走任何分支。
(2) “跳楼现象”
- 多分支 if 语句有“跳楼现象”:条件从上往下依次验证,如果满足了某个条件,会立即执行后面的结构体,执行完之后,不会再往后验证其他的条件了,而是从这一层直接跳楼跳出if语句。
4. 案例
利用多分支 if 语句细分班级成绩区间。
优秀:85-100;
良好:75-84;
及格:60-74;
不及格:60以下。
<script>//多分支if语句案例//(不用设置比如(s >= 75 && s < 85) 这样的条件)//因为如果语句会往下走,表示上面的不符合,所以可以相对比较简化写成如下形式:var s = prompt("请输入您的成绩","100");if (s >= 85) {alert("您的成绩区间为优秀");} else if (s >= 75) {alert("您的成绩区间为良好");}else if (s >= 60) {alert("您的成绩区间为及格");} else {alert("您的成绩区间为不及格");}
</script>
三、if 语句嵌套
1.介绍
- if 语句的结构体部分,代码可以是任意的代码,甚至是另外一组 if 语句。
- 也就是 if 语句内部嵌套了 if 语句。
- 如果想执行内部 if 语句的某个分支,必须满足外部 if 语句的条件,同时还要满足内部 if 语句的某个条件。
- 优点:可以简化多分支 if 语句。
2.案例
利用 if 语句嵌套判断一个人是否退休。
男性:60 岁退休;
女性:55 岁退休。
<script>//if 语句嵌套,判断一个人是否退休。男性:60 岁退休;女性:55 岁退休。var age = parseInt(prompt("请输入您的年龄","55"));var sex = prompt("请输入您的性别","女");if (sex === "女") {if (age >= 55) {alert("恭喜您可以享受退休生活啦!");} else {alert("还要继续奋斗"+ (55 - age)+ "年,加油!");}} else {if (age >= 60) {alert("恭喜您可以享受退休生活啦!");}else {alert("还要继续奋斗"+ (60 - age)+ "年,加油!");}}
</script>
四、三元表达式
1.介绍
- 又叫三元运算符,必须有三个操作数参与的运算。
- 操作符号:
? :
- 表达式:在参与JS程序时,都必须先计算出表达式结果,才能参与后续程序。
- 由于三元表达式具备了一些选择的效果,所以也是一种条件分支语句。
- 作用:根据布尔表达式的结果,如果为真,三元表达式结果就是真值;如果为假,三元表达式结果就是假值。
2.语法
<script>boolean_expression ? true_value : false_value;
</script>
(1)布尔表达式
- boolean_expression:布尔表达式,表达式在参与三元运算中必须求得一个布尔类型的值,要么是
true
,要么是 false,结果作为判断依据,判断到底去:前面的值还是后面的值。
(2)true_value
- true_value:布尔表达式的值为真时,三元表达式的结果。
(3) false_value
- false_value:布尔表达式的值为假时,三元表达式的结果。
3.优点
- 虽然if语句可以模拟三元表达式,但是三元表达式有自己的优点:
(1)结构更加简单
- 二选一的情况下,三元表达式结构更加简单。
<script>//三元表达式 console.log(true ? 1 : 0); //1console.log(false ? 1 : 0); //0
</script>
(2)可以赋值给一个变量
- 三元表达式作为一个表达式参与程序时必须运算出结果才能参与,可以利用这个特点,将二选一结果赋值给一个变量。遇到给一个变量根据条件二选一赋值的情况,可以使用三元表达式。
4.案例
用三元表达式,让用户输入一个整数,反馈给用户判断此整数大于等于3还是小于3。
<script>//三元表达优点:可以赋值给变量var a = 3;var b = parseInt(prompt("请输入一个整数","4")) >= a ? "大于等于3" : "小于3";alert(b);
</script>
五、switch 语句
1.介绍
- 开关语句允许一个程序求一个表达式的值,并且尝试去匹配表达式的值到一个 case 标签。
- 如果匹配成功,这个程序执行相关的语句。
2.语法
<script>switch (表达式) {case 值1:结构体1;break;case 值2:结构体2;break;……default: 结构体n;break;}</script>
- switch:关键字表示开始进入一个开关语句。
- 表达式:会求出一个具体的值,将这个值去与
{}
内部的 case 后面的值进行对比、匹配; - 如果值相等表示匹配成功。匹配相等时,方式是进行全等于匹配,不止值要相等,数据类型也要相等。
- case:示例的意思,作为关键字后面必须跟一个空格,书写匹配的值。
- case 后面的结构体:每个 case 匹配成功之后要执行的语句。
- break:用于打断结构体,直接跳出程序,模拟跳楼现象。
- default:相当于if语句中的 else,否则的情况,如果前面的 case 都不匹配,执行 default 后面的语句。
3.运行机制
(1)表达式→结果
- switch 语句首先会将小括号内的表达式计算出一个结果;
(2)匹配
- 用结果去匹配结构体内部的 case;
(3)执行
- 从上往下进行匹配,如果匹配成功,会立即执行这个 case 后面的语句,直到遇到一个 break 跳出整个 switch 语句;
- 如果前面的 case 没有匹配成功,会跳过 case 之间的语句,去匹配下一个 case,直到匹配成功;
- 如果都不成功就执行 default 后面的语句。
4.案例1
输出星座性格。
<script>//switch语句//案例1:输出星座运势var star = prompt("请输入您的星座,为您分析性格","白羊座");switch (star) {case "白羊座":alert("优点:朝气蓬勃、热情坦率、热爱自由、慷慨真诚、勇敢直率。缺点:自我中心太强、缺乏耐心、好斗、三分钟热度、粗枝大叶、有时过于感性、记性差");break;case "金牛座":alert("优点:踏实靠谱、善于财务的管理、艺术细胞强、思维缜密、脚踏实地。缺点:固执、不懂变通、缺乏自信、容易敏感、容易被人误解、反应过慢。");break;case "双子座":alert("优点:搞怪机灵、反应灵敏、充满好奇心、风趣幽默、口才良好、积极主动、豁达开朗。缺点:低迷、耐力差、孩子气、缺乏安全感、容易敏感、敷衍了事、缺乏耐性。");break;case "巨蟹座":alert("优点:谨慎、创造力强、有坚强的意志力、组织能力强、富有同情心、善解人意。缺点:心软、苛刻、占有欲强、天性多疑且情绪化致难以取悦。");break;case "狮子座":alert("优点:思想开阔、热心、慷慨、有领导能力、不多疑、、乐观、思考、保护他人、为人慷慨、具幽默感。缺点:自以为是、刚愎自用、势利、能伸不能屈、喜欢接受奉承、喜欢要求别人、缺乏节俭的精神、死要面子活受罪。");break;case "处女座":alert("处女座追求完美,吹毛求疵是他们的特性。多数的处女座都很谦虚,但也因此给自己造成很大的压力。处女座的人不喜欢闲着,对别人常常乐于服务。缺乏自信的处女座有时候组织能力较差,需要家人与朋友们的鼓励去推动他们。。");break;case "天秤座":alert("优点: 责任心强、温婉善良、有求知欲、善解人意、因事制宜、适应力强、大度、与世无争、审美能力 、能屈能伸。缺点:优柔寡断、容易受人影响、比较懒惰、纠结。");break;case "天蝎座":alert("优点:现实至上、善于保守秘密、任劳任怨、不畏挫折、悟力快、洞悉能力强、专一、爱恨分明、舍己为人。缺点:个性倔强、蛮横、愚昧、远离人群的关怀和热情、外表坚强、内心脆弱、表里不一、孤僻自怜。");break;case "射手座":alert("优点:幽默感、心胸开阔,诚恳宽厚、行动力强、行事认真、讲义气,有正义感。缺点:心直口快、固执独断、偏激、过度理想化、反复无常、喜怒太形于色。");break;case "摩羯座":alert("优点:心地祥和仁慈、行动敏锐、爱好和平、爱恨分明、心觉敏锐、做事沉着、思想优越。缺点:过于压抑、不善表达、自我、容易陷入困境、孤独感太重、思想躁动。");break;case "水瓶座":alert("优点:乐于发掘真相、博学多思、理性的智慧、独立,有个人风格、创意十足。缺点:不按常理出牌、喜欢多管闲事、过于理想化、太相信自己的判断、思想多变,缺乏恒心、缺乏热情、我行我素。");break; case "双鱼座":alert("优点:不自私、善解人意、具有想象力、浪漫、感情丰富、温和有礼、直觉力强、天真、富有同情心。缺点:粗心、浮躁、散漫、不切实际,幻想太多、缺乏理性,感情用事。");break; default :alert("没有找到您的星座,请检查是否输入有误哦!");break;}
</script>
5. 注意事项
(1) default 可以不写
- default 可以不写,相当于 if 语句没有 else。
(2) break灵活处理
- break 关键字:根据结构需要有时必须在每个 case 后面都要写,为了模拟跳楼现象,如果不写break,对应的 case 后面的语句执行之后,不会跳出结构体,会继续想下执行其他 case 的后面的语句,直到遇到一个 break。
- 可以利用 break 不写的情况制作一些特殊的案例(如下案例2)。
6.案例2
用户输入一个月份的数字,请返回给用户对应月份的天数。
<script>//案例2:输入月份数字,输出对应月份天数var m = prompt("请输入月份数字","1");switch (m) {case "1" :case "3" :case "5" :case "7" :case "8" :case "10" :case "12" :alert("2021年" + m + "月有31天");break;case "2" :alert("2021年" + m + "月有28天");break;default :alert("2021年" + m + "月有30天");break;}
</script>
六、总结
- 总结:实际工作中使用三种语句的情景。
- if 语句:最常用的语句,所有的判断情况都能够书写。
- 三元表达式:多用于给变量赋值根据条件二选一的情况。
- switch 语句:多用于给一个表达式去匹配多种固定值可能性的情况。
下篇继续:【69】JS(4)——表达式和语句②流程控制语句(2)循环语句
【68】JS(4)——表达式和语句②流程控制语句(1)条件分支语句相关推荐
- 〖大前端 - 基础入门三大核心之JS篇⑰〗- JavaScript的流程控制语句「while循环语句」
当前子专栏 基础入门三大核心篇 是免费开放阶段.推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费开放,购买任意白宝书体系化专栏可加 ...
- JavaScript基础06-day08【if练习、条件分支语句switch、for循环】
学习地址: 谷粒学院--尚硅谷 哔哩哔哩网站--尚硅谷最新版JavaScript基础全套教程完整版(140集实战教学,JS从入门到精通) JavaScript基础.高级学习笔记汇总表[尚硅谷最新版Ja ...
- JavaScript-switch条件分支语句
文章目录 条件分支语句(switch 语句) 1. 语法: 2. 执行流程: 2.1. 在执行时会依次将 case 后的条件表达式的值和 switch 后的条件表达式的值进行全等比较 2.2. 如果比 ...
- shell编程之函数和case多条件分支语句
shell编程之函数和case多条件分支语句 函数介绍 函数语法定义 通过函数编写功能脚本 case语句 case条件分支语句介绍 函数介绍 函数介绍: shell 中允许将一组命令集合或语句形成一段 ...
- MATLAB 的条件分支语句
MATLAB 的条件分支语句: 1)if...end 2)if...else...end 3) if...elseif...elseif...else...end a=30; if a<2 ...
- 使用控制结构——条件分支语句——简单条件
简单条件判断时,如果条件为true 那么pl/sql执行器会执行then 后的操作:如果为false或是null,那么pl/sql执行器会直接退出条件分支语句.下面给个例子 根据雇员名输出雇员工资,并 ...
- switch中case后可以是表达式吗_自学C++基础教程【流程控制语句】(switch语句 )...
switch语句:又被称之为 分支选择语句,它提供了一种更方便的方法来实现深层嵌套的if.else逻辑: switch语句先计算表达式的值,并逐个与其后的常量表达式的值相比较,当表达式的值与某个常量表 ...
- C语言流程控制语句——3个循环语句和一个条件语句
循环控制语句 C语言有3种循环 for while do while while循环 我们先来看下while循环,流程图如下: 下来看个小示例 do while循环 流程图如下: 下来看个小示例 两个 ...
- shell脚本(二)--if流程控制语句和for循环语句的使用
理论部分: 1.在简单的脚本中各条语句按顺序执行,从而实现自动化的管理, 顺序单一执行太过机械化,不够"智能",难以实现更加灵活的系统任务. 例如:批量安装软件包 100台机器 5 ...
最新文章
- MyBatis的架构和其运行流程
- SAP Commerce Extension的Web应用启动问题
- android 16进制 全透明_你有几种实现方案Android 设备唯一标识?
- linux怎么运行g77,Linux安装g77编译器的技巧
- Jquery实现循环删除Reaper某一行
- Android 学习思维导图
- Android studio 下载安装
- 如何用sql语句创建一个表(简单基础)
- MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
- Win10安装Centos7双系统
- JS 微信公众号如何跳转到另一个微信公众号的链接
- VUE3 Composition API详解
- excel表格如何转换成word表格_告诉你如何将excel表格转换成word文档
- c语言实现图书借阅管理系统
- WPF 开机一键启动程序V1.0【原创】
- 机器学习——决策树+随机森林
- 蓝桥寒假训练1-2013年第四届蓝桥杯省赛
- GateWay网关报错:Could not obtain the keys
- 爱普生Epson SureColor T5480 打印机驱动
- MGN:Learning Discriminative Features with Multiple Granularities for Person Re-Identification阅读笔记
热门文章
- 讽刺c语言,鲁迅先生评价《儒林外史》“婉而多讽”,达到我国古典小说讽刺艺术的高峰。请从小贴士中选择一项,结合作品具体内,赏析《儒林外史》的讽刺艺术:...
- 如何给word文档设置护眼模式
- u盘中毒现象为哪般,如何营救
- 重磅来袭,自动化测试APK---傻猴
- 魔兽世界服务器网页建设,上班族福利?高玩制作打开网页玩国服魔兽
- exit函数 _exit()函数,孤儿进程,僵尸进程
- java 9宫格抽奖_原生JS实现九宫格抽奖
- beyond compare过滤指定文件或文件夹
- 视频教程-ArcGIS之模型构建器(ModelBuilder)视频教程(GIS思维)-大数据
- Golang系列篇之配置内网GO仓库源代理(三)