JS03 - JavaScript if、switch 判断奇偶数/成绩/闰年/月份天数/成绩

347 阅读2分钟

if else 语句

  1. 通过一个 if 语句或 else 语句来决定代码是否执行

语法:

if (condition)
   statement1
[else
   statement2]
  • statement1:当 condition 为真时执行的语句。可为任意语句,包括更深层的内部 if 语句。要执行多条语句,使用 块语句 ({ ... }) 将这些语句分组;若不想执行语句,则使用空语句。

  • statement2:如果 condition 为假且 else 从句存在时执行的语句。可为任意语句,包括块语句和嵌套的if语句。

  1. 多层 if...else 语句可使用 else if 从句。注意:在 Javascript 中没有 elseif (一个单词)关键字。

语法:

if (condition1)
   statement1
else if (condition2)
   statement2
else if (condition3)
   statement3
...
else
   statementN
  1. 不要将原始布尔值的truefalseBoolean对象的真或假混淆。任何一个值,只要它不是 undefinednull、 0NaN或空字符串(""),那么无论是任何对象,即使是值为假的 Boolean 对象,在条件语句中都为真。例如:
var b = new Boolean(false);
if (b) //表达式的值为 true
  1. 建议不要在条件表达式中单纯的使用赋值运算,因为粗看下赋值运算的代码很容易让人误认为是等性比较。比如,不要使用下面示例的代码
if (x = y) {     //这里是赋值,并不是等性比较
   /* do the right thing */
}

//如果需要在条件表达式中使用赋值运算,用圆括号包裹赋值运算
if ((x = y)) {
   /* do the right thing */
}

if else 示例

判断奇偶数

//偶数:能被2整除;奇数:不能被2整除
function oddOrEven(num){
    if (Number(num) % 2 === 0) {
        console.log(`${num}->even`)
    } else if(Number(num) % 2 !== 0 && !isNaN(Number(num))){
        console.log(`${num}->odd`)
    } else {
        console.log("number is invalid.")
    }
}
oddOrEven(89)       //89->odd
oddOrEven(90)       //90->even
oddOrEven("80")     //80->even
oddOrEven("八十")   //number is invalid.

判断成绩

//根据 0-100 的数字输出成绩 90-100-A 80-89-B 70-79-C 60-69-D 0-59-E 
function grade(para){
    let grade = parseInt(para);
    if (grade >= 90 && grade <= 100 ) {
        console.log(`grade A:${grade}`)
    } else if (grade >= 80 && grade <= 89) {
        console.log(`grade B:${grade}`)
    } else if (grade >= 70 && grade <= 79){
        console.log(`grade C:${grade}`)
    } else if (grade >= 60 && grade <= 69){
        console.log(`grade D:${grade}`)
    } else if (grade >= 0 && grade <= 59){
        console.log(`grade E:${grade}`)
    }
}
grade(90)       //grade A:90
grade("46")     //grade E:46
grade("0分")    //grade E:0
grade("70分")   //grade C:70

判断闰年

//判断闰年:四年一闰;百年不闰,四百年再闰
//世纪闰年:公历年份为整百,且是400的倍数
//普通闰年:公历年份是4的倍数,且不是100的倍数
function bissextileYear(para){
    var bissextile = parseInt(para)
    if (bissextile % 400 === 0) {
        console.log(`世纪闰年:${para}`)
    } else if(bissextile % 4 === 0 && bissextile % 100 !== 0) {
        console.log(`普通闰年:${para}`)
    } else {
        console.log(`不是闰年:${para}`)
    }
}
bissextileYear(1900)        //不是闰年
bissextileYear("2500年")    //不是闰年
bissextileYear(2400)        //世纪闰年:2400
bissextileYear(2008)        //普通闰年:2008
bissextileYear("2024年")    //普通闰年:2024

switch 语句

条件判断语句的一种,常用于变量的判断。

语法:

switch (expression) {
  case value1:
    // 当 expression 的结果与 value1 匹配时,执行此处语句
    [break;]  //如果忘记添加 break,那么代码将会从值所匹配的 case 语句开始运行,然后持续执行下一个 case 语句而不论值是否匹配
  case value2:
    // 当 expression 的结果与 value2 匹配时,执行此处语句
    [break;]
  ...
  case valueN:
    // 当 expression 的结果与 valueN 匹配时,执行此处语句
    [break;]
  [default:
    // 如果 expression 与上面的 value 值都不匹配,执行此处语句
    [break;]]
}

我能把 default 放到 case 之间吗?可以啊!JavaScript 会在它找不到匹配项时跳回到那个 default :

var fo = 5

switch(fo){
    case 2:
        console.log(2)
    default:
        console.log("default")
    case 3:
        console.log(3)
}
//输出 default 3

switch(fo){
    case 2:
        console.log(2)
        break
    default:
        console.log("default")
        break
    case 3:
        console.log(3)
        break
}
//输出 default

switch(fo){
    case 2:
        console.log(2)
        break
    default:
        console.log("default")
        break
    case 3:
        console.log(3)
        break
    case 5:
        console.log(5)
        break
            
}
//输出 5

switch 示例

判断月份天数

//根据1-12的数字来输出一个月有多少天,不考虑闰年
var num = 6
switch (num) {
    // case 1,3,5,7,8,10,12: case 之间不能用逗号分隔,但可以在相同功能case后不写break
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        console.log(31)
        break
    case 2:
        console.log(28)
        break
    case 4:
    case 6:
    case 9:
    case 11:
        console.log(30)
        break
    default:
        console.log("输入有误")
        break
}

判断成绩

// 判断成绩
function levelScore(score){
    score = parseInt(score)
    var levelScore = score >= 0 && score <= 100 ? parseInt(score / 10) : -1
    switch(levelScore){
        case 10:
        case 9:
            console.log("A")
            break
        case 8:
            console.log("B")
            break
        case 7:
            console.log("C")
            break
        case 6:
            console.log("D")
            break
        case 5:
        case 4:
        case 3:
        case 2:
        case 1:
            console.log("E")
            break
        default:
            console.log("有误")
            break
    }
}
levelScore(90)      //A
levelScore(120)     //有误
levelScore(54)      //E
levelScore("89分")  //B