逻辑分支结构 :
主要体现在程序有多种执行可能 ;
分支语句 :
if 分支语句; else
switch 分支语句;
语句 : 语句是一个框架,我们要在框架允许的方式下编写我们的程序;
if 语句 :
1. if( 条件 => 最终会被转换为布尔值 ){ 代码 }
- 语义 : 如果条件被满足我们就执行当前对应的代码;
2. if( 条件 ){ 满足条件对应的代码 } else { 不满足条件对应的代码 }
- 语义 : 如果条件满足执行对应代码,条件不满足执行另一份代码,分支只有两条;
3. if( 条件1 ){ 满足条件1对应的代码 }else if( 条件2 ){ 满足条件 2 对应的代码 } else if(){ } ... else{ 如果条件都没有满足,那么执行else里面的代码 }
- 语义 : 根据我们传入的数据进行多个条件的匹配, 根据不同的条件执行不同的代码;
- 条件 : 不能有重合的部分;
API : prompt();
允许输入数据,当用户点击确定或取消的时候才会继续执行;
如果点击确定,用户输入的内容会以字符串的形式进行返回;
如果点击取消,返回结果会为false;
var input = prompt("请输入内容");
需求 : 输入考试成绩,及格之后弹窗庆祝;
- score : 成绩;
var score = prompt("请输入本次考试成绩");
if( score >= 60 ){
alert("恭喜通过本次考试");
}
语句结构并不能满足我们绝大多数需求所以我们需要if else语句 :
需求 : 通过考试 吃肯德基 , 不通过考试吃 大BI斗;
var score = prompt("请输入本次考试成绩");
if( score >= 60 ){
alert("请你吃肯德基");
}else{
alert("请你吃大BI斗");
}
需求 : 考试成绩 90 ~ 100 吃豪华套餐,奖励一百块钱;
考试成绩 80 ~ 89 吃儿童套餐, 奖励50块钱;
考试成绩 70 ~ 79 吃个p的套餐, 奖励10块钱;
考试成绩 60 ~ 69 吃个p的套餐, 奖励0块钱;
考试成绩 60以下 吃个大BI斗套餐, 罚款50;
- 重点 : 范围逻辑怎么写 ?
var score = prompt("请输入本次考试成绩");
错误示范 : 90 <= score <= 100
正确写法 : 使用逻辑同时满足两个条件 , 所谓范围就是找极值;
- 大于最小值 与 小于最大值;
if( score >= 90 && score <= 100){
alert("吃豪华套餐,奖励一百块钱");
}else if( score >= 80 && score <= 89 ){
alert("吃儿童套餐, 奖励50块钱");
}else if( score >= 70 && score <= 79){
alert("吃个p的套餐, 奖励10块钱");
}else if(score >= 60 && score <= 69){
alert("吃个p的套餐, 奖励0块钱");
}else if( score < 60 ){
alert("吃个大BI斗套餐, 罚款50");
}else{
// 异常处理 ;
alert("好好写成绩别乱写!");
}
注意 : 多条件并列的时候尽量少用else,因为else涵盖的范围太广了, 我们一般使用else来处理异常;
switch : 转换 ;
- switch主要作用是一对一的转换效果;
1 => 壹;
2 => 贰;
- 没有什么逻辑是if解决不了的;
- 我们使用switch会得到一个更优雅的结构;
var input = prompt("请输入1-9的数字");
input = Number( input );
if( input === 1 ){
alert("壹");
}else if( input === 2){
alert("贰")
}
- switch转换适合 条件特别多,但是条件判定简单的逻辑;
switch语句结构 :
switch( 条件数据 ){
case 匹配数据 :
匹配数据对应的代码;
case 匹配数据2 :
匹配数据2对应的代码;
在条件数据比对所有匹配数据之后没有匹配到符合数据的情况下会执行default关联的代码;
default :
没有匹配结果执行的代码;
}
注意事项 :
1. 条件数据 和匹配数据比对的时候是使用绝对等于进行匹配的;
2. switch匹配会出现穿透效果 , 我们需要使用 break关键字阻止穿透效果;
- 穿透效果 : 如果有一个匹配数据和条件数据相等, 后续所有的代码都会直接执行;
- 如果想要阻止穿透我们需要在代码块之后编写break关键字;
需求 : 输入 1 - 9 的数字,弹出数字对应的中文汉字;
var input = prompt("请输入1-9的数字");
input = Number( input );
input | string
匹配数据类型 | number
switch( input ){
case 1 :
alert("壹");
break;
case 2 :
alert("贰");
break;
default :
alert("暂不支持的转换数据");
}
- switch结构更适合处理转换类型的逻辑 , 或者处理多种情况且条件为数据的逻辑;
switch尤其不擅长处理范围逻辑;