js选择判断语句

231 阅读3分钟

选择语句

1、if..else语句

语法:

只有一个判断条件的时候 if..else

if(判断条件){   // 当判断条件为true的时候执行代码1,为false的时候执行代码2
    代码1;     
}else{
    代码2;
}

当不止一个判断条件的时候 elseelse if 代替:

if(判断条件1){          // 判断条件 1true 的时候执行 代码 1
    代码1; 
}else if(判断条件2){    // 判断条件 2true 的时候执行 代码 2
    代码2; 
}else{                  // 两个条件都不满足的时候执行代码 3
    代码3;         
}

思考1:

  • 如果满18,告诉他可以看电影
  • 如果满了16,告诉他可以在家长的陪同下观看
  • 如果不够16,告诉他不准看
let age = 20;
if(age >= 18){
    console.log("没时间解释了,赶紧上车吧");   // 打印这条
}else if(age >= 16){
    console.log("请在家长的陪同下观看");
}else {
    console.log("回家学习吧");
}

思考2:

  • 根据new Date().getDay()获取今天是星期几
  • 由于获取到的是纯数字,现在需要根据这个数字输出"今天是周*"的字符串
let date = new Date();      // 获取当前的时间
let week = date.getDay();   // 获得 0-6 表示周几 0:星期日
if(week == 0){
    console.log("今天是星期天");
}else if(week == 1){
    console.log("今天是星期一");
}else if(week == 2){
    console.log("今天是星期二");
}else if(week == 3){
    console.log("今天是星期三");
}else if(week == 4){
    console.log("今天是星期四");
}else if(week == 5){
    console.log("今天是星期五");
}else if(week == 6){
    console.log("今天是星期六");
}else{
    console.log("你火星的来的吧");
}

2、switch..case

语法:

// switch: 开关; case: 案列;

switch(变量){       // 判断变量是否全等于case的值1,或者值2,
    case1:
        执行代码1;  // 全等于的时候执行代码1
        break;      // 然后break;代码跳出switch语句, 不加break,会继续执行下面的代码
    case2:
        执行代码2;
        break;
    default:
        执行代码3; // 当都不满足条件的时候,会执行默认里的执行代码3
}

思考:素质教育(把分数变成ABCDE)

// 90-100 : A
// 80-89:   B
// 70-79:   C
// 60-69:   D
// 0-59 :   E
// 这里的等级是根据一个范围的分数划定的,用if..else很容易实现,但是switch..case是一个具体的条件,怎么办呢?
// 方法:将分数除以10再用parseInt属性取整
  
let score = 85;
score = parseInt(score/10); // 8
switch (score) {
// score = 10 或者 9 的时候 返回 A
case 10:
case 9:
    console.log("A");
    break;
// score = 8 的时候 返回 B
case 8:
    console.log("B");
    break;
case 7:
    console.log("C");
    break;
case 6:
    console.log("D");
    break;
default:
    console.log("E");
}           

3、三元运算符

这个运算符可以用来代替if..else条件判断。但是为什么有这个运算符呢?这里的原因是if..else使用两个代码块,却只有一个会执行,在讲究的程序员看来是一种浪费。所以使用三元运算符,用一条语句就可以完成功能。

语法:

判断语句?表达式1:表达式2;  

根据判断语句返回的布尔值,true的话,返回表达式1false的话返回表达式2

举个例子,看代码:

let sex = 1;
sex == 1 ? "男":"女";   // 判断sex是否等于1,如果true,返回第一个表达式:"男"

例题:判断两个数的大小

// 用if..else语句解决
// 这里使用了两个代码块,有点浪费
let num1 = 18;
let num2 = 39;
let max;
if(num1>num2){
    max = num1;
}else{
    max = num2;
}
console.log(max);

// 用三元运算符
let num3 = 28;
let num4 = 49;
let max1 = num3>num4? num3:num4;
console.log(max1);

注意(容易出错的地方):

下面这个语句判断如果是会员,费用为2美元,非会员,为10美元。现在设置了非会员,却打印出了2美元,显然出错了。

let isMember = false;
console.log("当前费用" + isMember ? "$2.00" : "$10.00"); // "$2.00"

出错的原因是号的优先级比号低,所以实际运行的语句是

//              true
console.log("当前费用false" ? "$2.00" : "$10.00");  // "$2.00"