标签:case 逻辑 else break score alert 分支
逻辑分支
引入:我们在日常生活中,有很多事情是需要做判断的,比如说,去服装城买衣服,你看中一件衣服,老板要300元,你立马就会想,这个价格是否贵了,判断的结果只有两种可能,一是贵,二是不贵,贵了你就不买了,不贵你就买了。再比如去网吧,网管也要判断你是否满18岁,结果也只有两种,是和否,是就上网,不是就看别人上网,再比如,学校根据考试成绩对每个人进行评级,如果成绩大于60就合格,否则就不合格,如果成绩大于90,就优秀等等。。。在咱们的代码中,也会有很多判断,比如咱们做的练习,小红满足条件了,就能嫁人了,不满足条件就不能嫁人。咱们昨天只是能看到一个布尔值,并没有进行下一步的操作,通过今天的学习就可以进行下一步的操作了,咱们今天学习的主要内容就是判断,也叫做逻辑分支。
判断也会有很多种,比如:
-
考试成绩大于60,及格
-
考试成绩大于60,及格,否则,不及格
-
考试成绩如果大于60并且小于80,及格,如果大于80并且小于90,良好,如果大于90,优秀
根据上述几种情况,我们把判断分为三种,根据结果只做一个件事情的,叫单分支,做两件事情的,叫做双分支,做多件事情的,叫多分支。
单分支
语法:
if(条件表达式){注意 - 写分支的时候 建议小括号大括号先一起写出来 - 小括号内的条件可以是逻辑运算也可以是数学运算,最后得出来的结果必须是一个布尔类型的值
当条件表达式的结果为true的时候要执行的代码
}
例:
var age;
if(age>18){
alert("已经成年了");
}
双分支
语法:
注意 - 写分支的时候 建议小括号大括号先一起写出来 - 小括号内的条件可以是逻辑运算也可以是数学运算,最后得出来的结果必须是一个布尔类型的值 - else后面是不用添加小括号的!
if(条件表达式){
当条件表示式的结果为true的时候要执行的代码
}else{
当条件表达式的结果为false的时候要执行的代码
}
例:
if(age>18){
alert("成年了");
}else{
alert("未成年");
}
多分支
语法:
if(条件表达式1){
当条件表达式1的结果为true的时候,要执行的代码
}else if(条件表达式2){
当条件表达式2的结果为true的时候,要执行的代码
}else if(条件表达式3){
当条件表达式3的结果为true的时候,要执行的代码
}
。。。
}else{
}
# 多分支可以有若干个else if,else根据需要可以有也可以没有
例:
var score = Number(prompt("请输入考试成绩:"));
if(isNaN(score)){
alert("输入不正确");
}else{
if(score>=0 && score<60){
alert("不及格");
}else if(score>=60 && score<70){
alert("及格了");
}else if(score>=70 && score<80){
alert("丙");
}else if(score>=80 && score<90){
alert("乙");
}else if(score>=90 && score<=100){
alert("甲");
}else{
alert("输入不正确");
}
}
分支结构的简写方式
如果单分支或双分支以及多分支的大括号中只有一行代码的时候,大括号可以省略。
例:
// 单分支的简写
var age;
if(age>18)
alert("已经成年了");
// 双分支的简写
if(age>18)
alert("成年了");
else
alert("未成年");
// 多分支的简写
var score = Number(prompt("请输入考试成绩:"));
var score = Number(prompt("请输入考试成绩:"));
if(isNaN(score))
alert("输入不正确");
else{
if(score>=0 && score<60)
alert("不及格");
else if(score>=60 && score<70)
alert("及格了");
else if(score>=70 && score<80)
alert("丙");
else if(score>=80 && score<90)
alert("乙");
else if(score>=90 && score<=100)
alert("甲");
else
alert("输入不正确");
}
分支结构的嵌套
分支的嵌套:可以将以上分支进行嵌套使用 表示有多种选择 语法: if(条件1){ if(条件2){ 满足条件1和条件2才会执行这里的代码 } else{ 满足了条件但是没有满足条件2执行这里的代码 } }例:定义三个变量,求出三个值中的最大值。
var a,b,c;
if(a>b){
if(a>c){
alert("变量a最大");
}else{
alert("变量c最大");
}
}else{
if(b>c){
alert("变量b最大");
}else{
alert("变量c最大");
}
}
switch多路判断
语法:
switch(变量或者值){
case 值1:
执行的代码块
break;
case 值2:
执行的代码块
break;
。。。
default:
执行代码块
}
使用说明:
-
break表示当前分支执行后就结束switch的运行,后续代码不再运行
-
default可以理解为判断语句中的else
-
case理解为if来判断这个变量是否全等于某个值
例:
var day = Number(prompt("请输入一个0~7之间数字:"));
if(isNaN(day) || day<=0 || day>7){
alert("输入错误");
}else{
switch(day){
case 1:
alert("今天星期一");
break;
case 2:
alert("今天星期二");
break;
case 3:
alert("今天星期三");
break;
case 4:
alert("今天星期四");
break;
case 5:
alert("今天星期五");
break;
default:
alert("输入错误");
}
}
<font color="red">注意:使用多路判断的时候,能使用switch进行判断,就尽量使用switch,因为switch的判断都是确定的值,条件比较简单,所以效率高。</font>
使用场景:
-
如果判断的条件比较复杂,使用if
-
条件是确定的值,分两种情况:
-
如果判断的分支小于等于3个,就使用if,这时候的效率和switch一样
-
如果大于3个,就使用switch。
-
-
switch判断使用的是<font color="red">全等于(===)</font>
switch 穿透写法
如果case后面不写break,那当前case执行后,会继续执行后面的case中的代码
输出1~5:
var day;
switch(day){
case 1:
alert("今天星期一");
break;
case 2:
alert("今天星期二");
break;
case 3:
alert("今天星期三");
case 4:
alert("今天星期四");
break;
case 5:
alert("今天星期五");
break;
default:
alert("输入错误");
}
当day的值为2的时候,不会执行后面的代码,当day的值为3的时候,执行完3的代码,还会执行4的代码,因为3的代码后面没有break。
这时候可以利用switch的这个特性,简写一些代码:
输入一个月份,判断并输出这个月有多少天?
var month = Number("请输入一个月份:");
if(isNaN(month) || month<=0 || month>12){
alert("输入错误");
}else{
switch(day){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
alert("这个月有31天");
break;
case 4:
case 6:
case 9:
case 11:
alert("这个月有30天");
break;
case 2:
alert("这个月有29天或28天");
break;
default:
alert("输入错误");
}
}
if条件中的细节
if条件的结果是布尔值,所以可以将布尔值当做条件放入if的小括号中
例:
if(true){
alert("真的");
}else{
alert("假的");
}
如果将别的非布尔值的表达式或数据放入条件小括号中,会发生隐形的类型转换
例:
if(2){ // 这里的2被转换成了布尔型
console.log(2);
}
三元运算
/* 三元运算符/三目运算符: if...else的简写方式 语法: 判断条件 ? 条件为true执行的代码 : 条件为false执行的代码段 - ? 表示当前判断的条件是否为true - : 表示当前判断条件是否为false 注意: 可以简化为 1判?2真:3假 总结 - 三元运算符是if分支的简写 你觉得不好理解不好记 依然使用if - 可以作为公式进行整体输出 - 还可以一次性输出整个语法 */ /* 需求1:判断两个变量之间的大小 */ // var a = Number(prompt('输入第一个值')) // var b = Number(prompt('输入第二个值')) // // if(a>b){ // // alert('a比b大') // // } // // else{ // // alert('b比a大') // // } // a>b ? alert('a比b大') : alert('b比a大')/* 需求2:判断三个变量之间的大小 */ var a = Number(prompt('请输入第一个数')) var b = Number(prompt('请输入第二个数')) var c = Number(prompt('请输入第三个数')) if (a > b) { if (a > c) { alert('a是最大值') } else { alert('c是最大值') } // a>c ? alert('a是最大值') : alert('c是最大值') } else { if (b > c) { alert('b是最大值') } else { alert('c是最大值') } // b>c ? alert('b是最大值') : alert('c是最大值') } alert(a>b ? (a>c ? 'a是最大值' : 'c是最大值') : (b>c ? 'b是最大值' : 'c是最大值')) // 以最简单的代码实现三个数的最大值
if双分支有一种简写方式:
条件?条件成立时运行的代码段:条件不成立时运行的代码段;
例:
a>b?console.log(a):console.log(b);
这种表达双分支的方式叫做三元运算,也叫做三元表达式。
三元运算有个特点:可以将整个表达式当做一个值,可以赋值给一个变量,也可以输出
例:
var max = a>b?a:b; // 将a与b中较大的数赋值给变量max
console.log(a>b?a:b); // 将a与b中较大的数输出
拓展1:隐式类型转换
强制类型转换:Number()、parseInt()
隐式类型转换:在计算或者是比较的时候 类型会偷偷的发生转换 1.字符串的隐式转换 - 字符串之间会进行拼接 - 加号左右有一个是字符串的情况下 另外一个也会转换为字符串类型进行拼接 2.【重点】数学运算 - + - * / % 正常的计算 - 除了加号以外其他符号的隐式转换 转换为数字类型进行计算的 3.比较运算 - 字符串和数字之间不具有比较性 字符串会隐式的转换为数字 - 字符串和字符之间的比较 - 如果字符串中的文本都是数字 隐式转换为数字进行比较 - 如果字符串中都是中文汉字 根据ASCII和unicode码表进行比较 NaN:not a number 不是一个数字 - 没有办法确定它是一个什么东西 - NaN无法进行比较 无法和自己 进行比较标签:case,逻辑,else,break,score,alert,分支 来源: https://www.cnblogs.com/yyund/p/16269618.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。