逻辑分支

319 阅读1分钟

多分支

多分支:多个条件,每个条件为true的时候都可以做一件事

让用户输入一个数字,判断是否是水仙花数,如果是,就输出yes,否则就输出no
var num = prompt('输入一个数字:')
// 判断num 是否是水仙花数
// 水仙花数: 百位数的3次方 + 十位数的3次方 + 个位数的3次方 = 当前这个数字
// 百位数上的数字
var bai = parseInt(num / 100)
// 十位数的数字
var shi = parseInt(num / 10)% 10
// 个位数的数字
var ge = num % 10
//判断
if ( bai * bai * bai + shi * shi * shi + ge * ge * ge == num) {
   console.log('yes');
 } else {
     console.log('no');
 }

分支结构的嵌套

  var score = prompt('输入一个成绩:')
// 判断输入的是否是数字
if (isNaN(score)) {
   // 如果不是数字
   alert('请输入数字!')
} else {
   // 是数字了
   // 判断范围
   if (score >= 0 && score <= 100) {
       // 是分数 - 判断等级
       if (score < 60) {
           console.log('不及格');
       } else if (score < 80) {
           console.log('良');
       } else if (score <= 100) {
           console.log('优');
       }
   } else {
       // 不是分数
       alert('数字不是分数');
   }
}

switch使用技巧

default可有可无;

break是用来结束整个switch语句的,break可有可无,视情况而定;

switch只判断了一次;

switch更严谨,因为switch在判断相等的时候,使用的是全等在判断

// 输入一个月份,根据月份输出这个月总共多少天
var month = prompt('输入一个月份:')
// 判断是否是数字
if (!isNaN(month)) {
    // 是数字
    // 将字符串转成数字
    month = Number(month)
    // 判断month的范围
    if (month < 1 || month > 12) {
        alert('输入的不是一个月份!')
    } else {
        // 是1~12的数字 - 用switch
        switch (month) {
            case 2:
                console.log('28或29天');
            break

            // switch的穿透写法
            case 4:
            case 6:
            case 9:
            case 11:
                console.log('30天');
            break

            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                console.log('31天');
            break
        }
    }
} else {
    alert('不是数字!')
}

switch的穿透写法

// 求 5 以内的 数字的阶和
var num = prompt('输入1~5的数字:')
if (!isNaN(num)) {
    if (num > 0 && num <= 5) {
        num = Number(num)

        // 定义一个容器,存放所有的和
        var sum = 0
        switch (num) {
            case 5:
                sum = sum + 5
            case 4:
                sum += 4
            case 3:
                sum += 3
            case 2:
                sum += 2
            case 1:
                sum += 1
        }
        console.log(sum);

    } else {
        alert('范围要1~5!')
    }
} else {
    alert('不是一个数字')
}

用最简短的代码求3个数的最大值

var max = a > b ? a > c ? a : c : b > c ? b : c
console.log(max);