乐趣区

关于javascript:逻辑分支

引入:咱们在日常生活中,有很多事件是须要做判断的,比如说,去服装城买衣服,你看中一件衣服,老板要 600 元,你立马就会想,这个价格是否贵了,判断的后果只有两种可能,一是贵,二是不贵,贵了你就不买了,不贵你就买了。再比方去网吧,网管也要判断你是否满 18 岁,后果也只有两种,是和否,是就上网,不是就看他人上网,再比方,学校依据考试成绩对每个人进行评级,如果问题大于 60 就合格,否则就不合格,如果问题大于 90,就优良等等。。。在咱们的代码中,也会有很多判断,比方咱们做的练习,小红满足条件了,就能嫁人了,不满足条件就不能嫁人。咱们昨天只是能看到一个布尔值,并没有进行下一步的操作,通过明天的学习就能够进行下一步的操作了,咱们明天学习的次要内容就是判断,也叫做逻辑分支。

判断也会有很多种,比方:

  • 考试成绩大于 60,及格
  • 考试成绩大于 60,及格,否则,不及格
  • 考试成绩如果大于 60 并且小于 80,及格,如果大于 80 并且小于 90,良好,如果大于 90,优良

根据上述几种状况,咱们把判断分为三种,依据后果只做一个件事件的,叫单分支,做两件事件的,叫做双分支,做多件事件的,叫多分支。

单分支

语法:

if(条件表达式){当条件表达式的后果为 true 的时候要执行的代码}

例:

var age;
if(age>18){alert("曾经成年了");
}

双分支

语法:

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("输出不正确");
}

分支构造的嵌套

例:定义三个变量,求出三个值中的最大值。

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:
        执行代码块
}

应用阐明:

  1. break 示意以后分支执行后就完结 switch 的运行,后续代码不再运行
  2. default 能够了解为判断语句中的 else
  3. 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 双分支有一种简写形式:

 条件? 条件成立时运行的代码段: 条件不成立时运行的代码段;

例:

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 中较大的数输入 
退出移动版