[Day08] 流程判断:if else 与 switch

「如果怎样就做某件事,否则做另一件事。」这个在聊天时都会拿来用的“程序语法”,来看看在 JS 上怎麽运作。
当指定的条件为 true,就会执行後续的指令,JavaScript 条件语法有:if...else 和 switch 两种。

1. if else

if (条件式) { // 如果怎样
 // 就做某件事
}
else { // 否则
  // 做另一件事
}  
else if (条件式 2) { // 新增条件式 2 的状况
  // 做另一件事
}
else if (条件式 3) { // 新增条件式 3 
  // 做另一件事
} 
// p.s. else 可以有也可以没有

在 Visual Studio Code 上的范本

用来判断某月份是第几季度,用上前面介绍过的 ===||

var month = 3;
if ( month === 1 || month === 2 || month === 3 ) {
  console.log("第一季");
}
else if ( month === 4 || month === 5 || month === 6 ) {
  console.log("第二季");
}
else if ( month === 7 || month === 8 || month === 9 ) {
  console.log("第三季");
}
else if ( month === 10 || month === 11 || month === 12 ) {
  console.log("第四季");
}
else {
  console.log("月份错误");
}
第一季

因为符合条件式 1,所以回传第一季。

Math.ceil() 函式会回传大於等於所给数字的最小整数。 -- MDN

因为判断式太多不好维护,可以用 Math.ceil 改成:

var month = 3;
if ( Math.ceil( month / 3 ) === 1 ) {
  console.log("第一季");
}
else if ( Math.ceil( month / 3 ) === 2 ) {
  console.log("第二季");
}
else if ( Math.ceil( month / 3 ) === 3 ) {
  console.log("第三季");
}
else if ( Math.ceil( month / 3 ) === 4 ) {
  console.log("第四季");
}
else {
  console.log("月份错误");
}
第一季 // 结果相同,也更简洁

而虽然已经变得简短,但如果 month 刚好是第四季,那就要做到第四次判断才会跑出结果,所以这时候可以改用 switch 的语法。

2. Switch

switch 语句会比对表达式里头的值是否符合 case 条件,然後执行跟这个条件相关的陈述式, 以及此一符合条件以外,剩下其他条件里的陈述式。

switch (表达式或变数) {
  case value: // 表达式的值
    
    break; // 每次都要加,不然程序会一路跑到底

  default: // 预设值,如果 case 条件都不成立就执行 
    break;
}

在 Visual Studio Code 上的范本 switch MDN 说明

刚刚的条件改写成 switch 後变得更简洁。

var month = 11;
switch ( Math.ceil( month / 3 )) {
  case 1:
    console.log("第一季");
    break;
  case 2:
    console.log("第二季");
    break;
  case 3:
    console.log("第三季");
    break;
  case 4:
    console.log("第四季");
    break;
  default:
    console.log("月份错误")
    break;
}
第四季 //

<<:  DAY21-JAVA的多重继承

>>:  AE-LED流动效果4-Day22

【PHP Telegram Bot】Day23 - Inline mode(内联模式):在输入框使用机器人

虽然还有另一个按纽,但是今天我想先来玩玩内联模式 前置作业 还记得 Day04 - Telegra...

Day2 Python 基础教学 (一)

在学习 Python 之前,我们需要先安装好这个语言, 这边准备了三个作业系统的安装方式。 MacO...

Day 06:Debug

前言 为什麽要把 debug 拿出来说呢? 我发现其实 debug 的流程比较少人讨论, 一般我们会...

Angular 深入浅出三十天:表单与测试 Day17 - E2E 自动化测试工具简介

在这个各种前端框架、开发工具层出不穷、百花齐放、百鸟齐鸣的美好时代, E2E 自动化测试工具的选择...

网路架构检视(对应:资通安全健诊)

这次最大挑战不是连假,而是 D2R 的发售,为了 SOJ 断赛我可以... 适用人员: 技术人员。 ...