Tips:这个只是作者的学习笔记,仅作参考
目录
什么是逻辑分支?
也就是我们对事物进行判断时的可能性,假设:如果我是个男的,那我就是个靓仔。那么这句话就是一个单分支。再假设,如果我是个男的,那我就是个靓仔,否则就是个肥仔,此时是梁总可能性进行判断,所以这就是双分支。那么那些更多可能性的便称之为多分支。
一、if分支
(一)、单分支
语法:如果怎样怎样,就怎样怎样
if(条件表达式){
当这个条件成立,执行该代码
}
例代码如下:简写可以直接不要大括号包裹,但一般为了可读性,还是会加上
var age = 18
if (age > 18) {
alert('你成年了')
}
// 简写
var age = 20
if (age >= 18)
console.log('成年');
(二)、双分支
句式:如果怎样怎样,就怎样怎样,否则就怎样
if(条件表达式){
当这个条件成立,执行该代码
}else{
当条件不成立时,执行该代码
}
例代码如下:
if (age < 18) {
alert('不准去网吧')
} else {
alert('随便去')
}
//简写
var age = 17
if (age >= 18) console.log('成年');
else console.log('未成年');
(三)、多分支
句式:与if else大差不差,就是多了几个如果。多分支可以有若干个else if,else根据需要可以有也可以没有
if (条件表达式) {
当这个条件成立, 执行该代码
} else if (条件表达式2) {
当上一条条件不成立但这条成立时, 执行该代码
} else if (条件表达式3) {
当上一条条件不成立但这条成立时, 执行该代码
} else (条件表达式4) {
当所有条件都不成立但这条成立时, 执行该代码
}
例代码如下:
var money = 1000
if (money > 1000) {
alert('去洗脚')
} else if (money > 200) {
alert('吃顿好的')
} else if (money > 50) {
alert('点杯奶茶')
} else {
alert('啥事没有')
}
if案例-成绩判断
var num = Number(prompt('请输入成绩'))
if (!isNaN(num)) {
if (num >= 0 && num < 60) {
alert('不及格')
} else if (num >= 60 && num <= 70) {
alert('及格')
} else if (num > 70 && num <= 80) {
alert('良好')
} else if (num > 80 && num <= 90) {
alert('优秀')
} else if (num > 90 && num <= 100) {
alert('别读了')
} else {
alert('你在输入什么?')
}
} else {
alert('输入不规范')
}
(四)、if语句补充
if语句进行多个判断不是必须嵌套多个else if,别的也可以,包括他自己
例如:
// 分支的嵌套 if里面能再套if
var a = 9
var b = 5
var c = 3
if (a > b) {
if (a > c) {
alert('a最大')
} else {
alert('a最大')
}
} else {
if (b > c) {
alert('b最大')
} else {
alert('c最大')
}
}
布尔类型可以直接当做条件表达式使用
// 布尔类型可以当条件表达式使用
if (true) {
console.log(123);
}
也可以直接输入数字,0为false,1(包括)以上会识别为true
// 在这里的数字,隐士转换成了布尔类型true
if (2) {
console.log('你好');
}
// 0转成布尔类型会是flase,所以会输出后者
if (0) {
console.log('你好');
} else {
console.log('世界');
}
二、switch分支
(一)、switch多路判断
因为总会遇到多个分支,如果一直用if else又会让事情变得麻烦,所以在面对更多的选项的时候switch会比if else好用。
Tips:使用多路判断的时候,能使用switch进行判断,就尽量使用switch,因为switch的判断都是确定的值,条件比较简单,所以效率高
使用场景:
如果判断的条件比较复杂,使用if
条件是确定的值,分两种情况:
如果判断的分支小于等于3个,就使用if,这时候的效率和switch一样
如果大于3个,就使用switch。
switch判断使用的是全等于(===)
语法:
switch (变量) {
case 值1:
当变量 === 值1的时候, 执行的代码段
break;
case 值2:
当变量 === 值2的时候, 执行的代码段
break;
case 值3:
当变量 === 值3的时候, 执行的代码段
break;
default:
当上述条件均不成立的时候执行的代码段
}
1. break表示当前分支执行后就结束switch的运行,后续代码不再运行
2. default可以理解为判断语句中的else
3. case理解为if来判断这个变量是否全等于某个值
练习一:
// 有一个输入框,输入数字几,就显示对应的星期几
var num = Number(prompt('请输入数字'))
if (!isNaN(num) && num > 0 && num <= 7) {
switch (num) {
case 1:
console.log('星期一');
break;
case 2:
console.log('星期二');
break;
case 3:
console.log('星期三');
break;
case 4:
console.log('星期四');
break;
case 5:
console.log('星期五');
break;
case 6:
console.log('星期六');
break;
case 7:
console.log('星期七');
break;
default:
break;
}
}
(二)、switch穿透写法
如果case后面不写break,那当前case执行后,会继续执行后面的case中的代码
练习二:
// 输入数字代表月份,得出该月份天数
var month = Number(prompt('请输入月份'))
// 1 3 5 7 8 10 12 31天
// 4 6 9 11 30天 2 28天/29天
if (!isNaN(month) && month > 0 && month <= 12) {
switch (month) {
case 1:
alert('该月有31天')
break;
case 3:
alert('该月有31天')
break;
case 5:
alert('该月有31天')
break;
case 7:
alert('该月有31天')
break;
case 8:
alert('该月有31天')
break;
case 10:
alert('该月有31天')
break;
case 12:
alert('该月有31天')
break;
case 4:
case 6:
case 9:
case 11:
alert('该月30天')
break;
case 2:
alert('该月28/29天')
break;
}
} else {
alert('你输入的月份不正确')
}
三、三元计算
if双分支有一种简写方式:
条件?条件成立时运行的代码段:条件不成立时运行的代码段;
例:
a>b?console.log(a):console.log(b);
这种表达双分支的方式叫做三元运算,也叫做三元表达式。
三元运算有个特点:可以将整个表达式当做一个值,可以赋值给一个变量,也可以输出
// 一般
var num=20
if (num%2===0) {
alert('偶数')
}else{
alert('奇数')
}
// 三元计算(if的简写方式) - 条件?当条件成立的时候执行的代码段:当条件不成立时执行的代码段
// 可读性较差
num%2===0?alert('偶数'):alert('奇数')