一.条件分支语句-if
1.分支结构
a.我们的js代码都是顺序执行的(从上到下)
b.逻辑分支就是根据我们设定好的条件来决定要不要执行某些代码
2.if语句
a.原理:
通过一个if语句来决定代码是否执行
if(条件){要执行的代码}
通过()里面的条件是否成立来决定{}里面的代码是否执行
b.if的数据转换
例如:
var sum=190
var youhuisum
if(sum>200){
youhuisum=sum-10
}
console.log(sum,youhuisum)
注意:如果满足条件就会继续运算大括号内的内容,如果不满足条件那运行结果就是undefined的了,因为变量未参与运算没被赋值定义。
但也可以用else分支来解决这一问题:
如:
var sum=190
var youhuisum
if(sum>200){
youhuisum=sum-10
}else{
youhuisum=sum
}
console.log(sum,youhuisum)
即使不满足if语句也会继续去运行else给未定义的变量赋值。
3.多个条件:“else if”
a.语法原理:if(条件1){条件1为true的时候执行}else if(条件2){条件2为true的时候执行}
else if可以写多个。
var sum1=190
var youhuisum1
if(sum>200){
youhuisum1=sum1-10
}else if(sum>100){
youhuisum1=sum1-5
}else if(sum>50){
youhuisum1=sum1-3
}else if(sum<50){
youhuisum1=sum1
}
console.log(sum1,youhuisum1)
//判断奇数偶数
//数学:能整除2的就是偶数,否则就是奇数
var n=9
if(n%2===0){
console.log("偶数")
}else{
console.log("奇数")
}
例二.
//根据0-100的数字输出成绩
/*
[90,100] 输出 A
[80,90] 输出 B
[70,80] 输出 C
[60,70] 输出 D
[0,60] 输出 E
*/
var a=83
if(a>=90){
console.log("A")
}else if(a>=80){
console.log("B")
}else if(a>=70){
console.log("C")
}else if(a>=60){
console.log("D")
}else if(a>=0){
console.log("E")
}
在这里要注意大于小于号的连用,因为代码是从左往右运行的,如果连用会先运算左边的值返回结果后再进行右边值的运算,例如上面90-100条件的表示方法,如果写成90<=a<100,a=83会先与90进行比较并返回布尔值,因为83小于90,返回的布尔值是就是0,之后再拿0和100去比较,这样就会与预期效果完全偏离。
正确的表示方法应该是if(90 <= a && a < 100),这样写的好处就是只有当a的值两边都满足的时候才会使if的条件成立。
二.条件分支语句-switch
1.作用:
2.语法:
a.switch 语句有至少一个 case 代码块和一个可选的 default 代码块。
b.比较 x 值与第一个 case (也就是 value1 )是否严格相等,然后比较第二个 case ( value2 )以此类推。
3. 例子
let a = 2 + 2;
switch (a) {
case 3:
alert( 'Too small' );
break;
case 4:
alert( 'Exactly!' );
break;
case 5:
alert( 'Too large' );
break;
default:
alert( "I don't know such values" );
}
结果就是Exactly!
如果把break全部去掉,则会输出变量符合条件的所有语句。
注意:
a.注意看给变量所赋值的类型。
b.不能省略break。
4.switch相关案例
//满200减100 满100减50 满50减30
var sum=120
var youhuisum
switch (true) {
case sum>200:
youhuisum=sum-100
break;
case sum>100 && sum<200:
youhuisum=sum-50
break;
case sum>50 && sum<100:
youhuisum=sum-10
break;
case sum<50:
youhuisum=sum
break;
default:
break;
}
document.write(youhuisum)
这里要注意一点即括号内不能直接填变量名,因为要用case的内容和括号内写的匹配,不能那表达式和sum变量直接匹配。
//根据1-12的数字来输出一个月有多少天,不考虑闰年
var month=12
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
document.write("31天")
break;
case 2:
document.write("28天")
break;
case 4:
case 6:
case 9:
case 11:
document.write("30天")
break;
default:
break;
}
遇到多个相同的case执行结果可以累加多个case减少代码量。