js基础:逻辑分支

336 阅读4分钟

1.程序的三大结构

 顺序结构:



选择(分支)结构:


循环结构:

下回分解~~~

2.程序的单分支结构 if 语句

if(你是女的){👌☺        那我们就约起。
}
if(你是男的)✋(•ˇ‸ˇ•)  
     我不搞基
}

当条件判断为真true时,执行花括号内的语句,如果条件为假,跳过花括号内的语句

if(条件){
    执行语句
}
if(条件){
    执行语句1;为真时执行
} else {
    执行语句2;为假时执行
}
当条件判断为真true时,执行语句1,如果条件为假false,执行语句2。

if()括号里面的东西我们通常也叫它逻辑点 为真true,为假false,这是布尔值,需要通过逻辑运算符得到。 

但是: if(1){ alert("会弹出来么?"); } 1是数值型,不是布尔值,更不是true?为什么会执行花括号内的语句了呢? 

在一些特定的情况下,计算机会进行一些隐式转换,他和强制类型转换不一样,他不需要你做什么,会自动对数据类型进行转换 

在运算中,if(小括号)中的语句会发生隐式类型转换。

1.运算中的隐式类型转换: 

 var a = "1",b = 2;
    a + b = ??? 

 +号有两种含义:

数学中的+号运算符;字符串的拼接。

优先字符串拼接,所以在检测到+号左右两边存在字符串的时候,会自动将另一边不是字符串的数据,转成字符串,再进行操作 a - b = ??? 除了+号有两层意义为外,-*/%号只有数学意义,所以当进行-*/%的时候,默认将运算符两边的数据类型隐式转换成数字类型再进行运算

 if(小括号)内的隐式类型转换。 if()中只需要布尔值,那么在if判断中,会把括号内所有的数据类型,都隐式转换成布尔型。 在if()中,非零数字都会转成true,非空字符串都会转成true;这是两条基础规则,其他规则后面会提到。 alert(1 == true)

2.程序的多分支switch语句/break关键字

switch()多分支语句

注意:在switch()内,不会发生隐式数据类型转换

switch(){        
case 0:alert("零");        break;        
case 1:alert("一");        
case 2:alert("二");        
default:alert("不识别的数字");    
}
switch()内,不会做判断,在case身上判断这个值是否符合。

switch()内,不能做判断,同时在case后也不能做判断,

注意:如果判定的是范围,不要使用switch语句;判定具体数据的时候,才使用switch

案例:判断星期几;判断成绩;

注意switch的应用场景:有多个确定值需要判断的时候

注意case语句的穿透,要加break语句:如果程序没有break语句,那么解析器会继续向下解析

注意default相当于if语句中的else,当以上条件都不满足的时候,执行default

补充:

1.错误提示信息。

missing ) after argument list     丢失一半括号     
Unexpected token )         意外符号     
oYeear is not defined   没有声明oYeear     
Cannot read property 'value' of null     无法获取空值的value    
 Unexpected identifier       意外的标识符    
 。。。。。。
not defined没有声明undefined没有赋值

2.三目运算符

var a = 6;       
if(a<10){         
a = "0"+a;       
}else{         
a = a;      
}
上面的代码,等价于下面的代码

var a = 6;       
a = a<10 ? "0"+a : a;

三.练习

1.判断一个整数属于哪个范围:大于0;小于0;等于0

2.判断一个整数是偶数还是奇数,并输出判断结果

3.开发一款软件,根据公式(身高-108)*2=体重,可以有10斤左右的浮动。来观察测试者体重是否合适


4.判断学生成绩,switch,大于60及格,60~70中等,70~80良好,80~90优秀,90~100学霸

5.输入年份,计算某一年是否为闰年

能被4整除且不能被100整除,或者能被400整除

6.案例:输入数字,显示星期几,假设1号就是周一

7.案例:输入成绩分数,判定成绩等级(if和switch两种写法)

8.输入月份,显示当月的天数

要求:1) 利用case穿透简化代码

9.小贺刚上班,按工作时间小时制领取周工资,工资标准是,每小时rate元RMB。每周工作时间40小时,如果要加班,超出部分按正常工资的1.5倍计(老板还算不错)。这周小贺上班的时间为hour小时,请编程序,输入rate和hour,输出小贺本周的薪水。

10.根据一个数字日期,判断这个日期是这一年的第几天例如: 20160211,计算后结果为42