- JS逻辑运算&分支结构
一)、逻辑运算:将多个关系运算综合起来,得出一个结论(true,false)
3种: &&(且) ||(或) !(非)
&&:2个条件都必须为true,才返回 true
||: 2个条件都必须为false,才返回 false
短路逻辑(分支结构):
&&:如果前一个条件为false,就已经得出结论->false
||: 如果前一个条件为true, 就已经得出结论->true
引申出短路逻辑:
语法:1). 条件&&(操作)
条件满足,执行后续操作,不满足,则不执行
2). 值1||值2
如果值1有效,就用值1,否则,就用值2
程序中的3种结构:
1). 顺序结构
2). 分支结构:根据不同的条件,满足条件就执行,不满足就不执行
3). 循环结构
案例一(用&&和||判断输入的数是否为闰年)
案例二
案例三
二)、Js的三目运算
三目运算 三元运算 条件运算
根据不同的条件,执行不同的操作/返回不同的值
语法:
条件1?值1或操作1: // 满足条件1才取值1或执行操作1
条件2?值2或操作2:
默认值或默认操作 // 上述条件都不满足则取默认值或执行默认操作
总结:多个条件,多件事,多选一执行
如果操作语句比较简单,建议使用三目运算
案例一
案例二
注意:在输出过程中应该特别注意中英文格式,否则容易报错
三)、JS的分支结构
分支结构:
3种:
1. if结构:一个条件一件事,满足就做,不满足就不做
语法:
if(条件){
满足条件执行的操作
}
2. if..else结构:一个条件2件事,二选一执行
语法:
if(条件){
满足条件执行的操作
}else{
不满足条件执行的操作
}
3. if..else if..[else]结构:多个条件多件事,多选一执行(也有可能什么都不做)
语法:
if(条件1){
满足条件1执行的操作
}else if(条件2){
满足条件2执行的操作
}[else{
上述条件都不满足执行的默认操作
}]
案例一
案例二
四)、js的分支结构;switch case
switch case结构:当条件都是*全等比较*的时候,才可以使用switch case结构
全等比较:不仅比较值,还比较数据类型
语法:
switch(表达式){
case 值1:
满足值1才执行的代码段
case 值2:
满足值2才执行的代码段
... .. :
.....................
default:
如果前面的值都不满足,执行默认操作
}
问题:经过运行我们发现switch case结构如果没有break关键词,那么会根据条件进入到满足的条件的case执行,并以此触发后续的所有case操作执行(包括default),所以,如果想要独立的执行分支,必须要在每个case之间添加break关键词
break:"终止"当前结构执行,并跳出结构
何时可以省略break关键词:如果上下两个case执行相同操作时
案例一
案例二
五)、循环结构 while
循环结构:让程序*反复执行*同一段代码
循环三要素:
1. 循环条件:让循环反复执行的条件
2. 循环变量:循环条件中用于比较的变量
循环变量总是向着不满足循环条件的趋势进行迭代的
3. 循环体:循环内反复执行的代码段
循环分类:
1. while循环:先判断循环条件,再执行循环体
一般情况下当循环条件的变化没有规律的时候优先使用while循环
while(循环条件){
循环体;
迭代修改循环变量;
}
2. do..while循环:先执行循环体,再判断循环条件
do{
循环体;
迭代修改循环变量;
}while(循环条件)
注意:while循环与do..while循环基本等效,区别在于看第一个循环条件是否满足
如果满足,则两者等效,不满足,while循环一次都不执行,而do while循环至少执行一次
案例一
案例二
六)、作业解释
作业1:分别输入3个数字保存在x,y,z中,不论如何输入3个数值,将来输出x,y,z总是从大到小排列
问题:如果在不声明新变量的前提下交换两值位置
作业2:按照输入的分数,显示等级
如果分数<0或者>100,输出“无效成绩”
否则,如果分数>=90,显示A
否则,如果分数>=80,显示B
否则,如果分数>=60,显示C
否则,显示D
作业3(选做):
输入年,月,日,输出这一天在这一年中是第几天
比如:输入2021年,8月,9日 这一天在2021年中是第几天
思路:把8月之前的7个月的满月天数+9,就得出了是第几天了
问题1:要判断是否为闰年,如果是闰年2月为29天,否则为28天
问题2:如果根据月份把之前的满月天数进行累加?