【JavaScript】条件分支语句

if 语句

if (condition) { }
  • ① condition:条件语句,返回值能隐式转换为 boolean 类型
    • 6 个负性值0 NaN '' undefined null false
let score = 61;
if (score >= 60) {
	console.log('我执行了'); // 我执行了
}

if … else … 语句

if (condition) {
	 code block 1;
} else {
	 code block 2;
}

if … else if … else 语句

if (condition 1) {
	code block 1;
} else if (condition 2) {
	code block 2;
} else {
	code block 3;
}
  • 有多个代码块,但只会执行一个
let score = 80;
if (score < 60) {
	console.log('我挂科了');
} else if (score < 70) {
	console.log('我及格了');
} else if (score < 80) {
	console.log('我考得还不错了');
} else if (score < 90) {
	console.log('我起飞了'); // 我起飞了
} else {
	console.log('够我吹一年了');
}
  • 注意:语句是从上往下执行的,如果上面的 conditiontrue,那么执行完对应的 code block 后,条件语句结束,后面的语句将不会被执行。所以一般情况下,后面的条件得包含前面的条件
let score = 50
if (score < 100) { // 第一个条件过于宽松,后面的语句都不会被执行
    console.log('够我吹一年了'); // 够我吹一年了
} else if (score < 90) {
    console.log('我起飞了');
} else if (score < 80) {
    console.log('我考得还不错了');
} else if (score < 70) {
    console.log('我及格了');
} else {
    console.log('我挂科了');
}
  • 注意else 的代码块可以不写,具体看需求

条件分支语句的嵌套

条件分支语句里面还可以嵌套条件分支语句

let chineseScore = 61
let mathScore = 62
if (chineseScore >= 60) {
    if (mathScore >= 60) {
        console.log('恭喜你,全部及格了'); // 恭喜你,全部及格了
    }
}

switch … case 语句

switch (key) {
    case value1:
        // code block 1
        break;
    case value2:
        // code block 2
        break;
    default:
        // code block 3
        break;
}
  • key 先与 value1 比较,如果相等,则执行 code block 1;如果不相等,则与 value2 比较… 以此类推… 如果都不相等,则执行 default 后面的 code block 3
  • 注意value 的比较是全等 === 的比较,所以比较的是 & 类型
let day = 2
switch (day) {
    case 0:
        console.log('今天是周日');
        break;
    case 1:
        console.log('今天是周一');
        break;
    case 2:
        console.log('今天是周二'); // 今天是周二
        break;
    case 3:
        console.log('今天是周三');
        break;
    case 4:
        console.log('今天是周四');
        break;
    case 5:
        console.log('今天是周五');
        break;
    default:
        console.log('今天是周六');
        break;
}
  • 注意:要运用好每个 code block 后面的 break。不写 break 的话,执行完对应的 code block 后,会继续执行后面跟着的 code block,直到遇见 break / 语句结束
let year = 2000
let month = 2
switch (month) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        console.log('这个月有31天')
        break;
    case 4:
    case 6:
    case 9:
    case 11:
        console.log('这个月有30天')
        break;
    case 2:
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
            console.log('今年的2月份有29天') // 今年的2月份有29天
        } else {
            console.log('今年的2月份有28天')
        }
        break;
} // 注意:default 可以不写
  • 注意:当我们想用 key 比较一个范围的时候,我们可以用 boolean 值作为 key,用式子作为 value
var score = 61
switch (true) { // 运用 boolean 类型进行判断
    case score < 60:
        console.log('我挂科了');
        break;
    case score < 70:
        console.log('我及格了'); // 我及格了
        break;
    case score < 80:
        console.log('我考得还不错');
        break;
    case score < 90:
        console.log('我起飞了');
        break;
    default:
        console.log('我可以吹一年了');
        break;
}

三元运算符

value ? expression1 : expression2

  • value 如果为 true 则执行 expression1;否则执行 expression2
console.log(true ? 8 : 6) // 8
console.log(false ? 8 : 6) // 6
  • 注意能用三目运算符就可以考虑不用 if … else 语句,因为 if 条件判断语句性能相对较差
let score = 59;
let msg = '';
if (score < 60) {
    msg = '不及格';
} else {
    msg = '及格';
}
console.log(msg); // 不及格
let score = 59;
let msg = score < 60 ? '不及格' : '及格';
console.log(msg); // 不及格

小发现

  1. switch … case 能解决的,肯定能用 if … else 解决;if … else 能解决的,switch … case 不一定能解决
  2. if … else 语句可以考虑用三目运算符
  3. if 语句可以考虑用短路算法
  4. 如果三目运算符的返回值是布尔值,就可以不用写返回 ( 比较运算的结果本就是布尔值 )
console.log(1 == 1 ? true : false) // true
console.log(1 == 1) // true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JS.Huang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值