Day 3 - 条件式

条件式就是小学常写的造样造句:如果...就(否则)...的概念。
这边会介绍几种常用的条件式语句 if、三元运算子和 switch。

  • If statement and condition
  1. If
    用法为 if(条件){符合条件(true)时要执行的动作}
    例如:
if ( 3 > 2) {
  console.log("3 > 2"); // 3 > 2
}

因为 3 > 2 是 true,所以会执行大括号中的动作,印出 3 > 2

  1. If...else...
if(条件){
    符合条件(true)时执行的动作;
}else{
    不符合条件(false)时执行的动作;
}

例如:

let grade = 40;
if(grade >= 60){
  console.log("恭喜通过");
}else{
  console.log("你要加油");
}

上面的例子因为 grade = 40,经过 if 里条件的时候不符合,所以会跳过,继续往下执行 else 里的动作,结果会显示你要加油。

  1. If...else if...else...
    用於多个条件的情况
    使用方式为:
if(条件 1){
    符合条件 1 时要做的事
}else if(条件 2,3,4...){
    符合条件 2 or 3 or 4 or ... 时要做的事
}else{
    都不符合前面的几个条件时,就执行 else 里面的动作;
}

例如:

let age = 20;
if(age >= 65){
  console.log("请购买敬老票");
}else if(age >= 18){
  console.log("请购买成人票");
}else if(age >= 8){
  console.log("请购买儿童票");
}else{
  console.log("免费入场");
}

上面的例子,因为 age = 20,符合 age >= 18 这个条件,所以结果会印出请购买成人票。

  • 三元运算子(条件运算子)
    使用 ?:,符合条件(true)就执行 ? 後的动作,否则执行 : 後的动作。
    例如:
    如果 >= 18 岁的话可以骑机车,否则就要骑脚踏车,下面的例子 myAge = 23,符合条件 >= 18,所以会执行 ? 後的动作,印出 Scooter。
let myAge = 23;
let age = (myAge >= 18) ? "Scooter" : "Bike";
console.log(age); // Scooter

把上面 if else 的例子改成三元运算子,结果如下:
grade = 40 没有符合条件 >= 60,所以会执行 : 後的动作,印出你要加油。

let grade = 40;
let result = (grade >= 60) ? "恭喜通过" : "你要加油";
console.log(result); // 你要加油

再举个例子,将下面 if...else...的程序码改写成三元运算子

let age = 18;
let price;
if (age < 18) {
  price = 100;
} else if (age < 60) {
  price = 150;
} else {
  price = 75;
}
console.log(price); // 150

改成三元运算子的写法如下:

let age = 18;
let price = (age < 18) ? 100 : (age < 60) ? 150 :75;
console.log(price); // 150
  • switch
    switch 语句会比对()里的值是否符合 case 条件,如果符合某一 case 条件就执行这个条件对应的动作,执行完後会 break 表示结束,如果 case 的条件都不符合,就会执行 dafault 後面的动作。
switch (expression) {
  case value1:
        //当 expression 的值符合 value1
        //要执行的陈述句
    break;
  case value2:
        //当 expression 的值符合 value2
        //要执行的陈述句
    break;
  ...
  case valueN:
        //当 expression 的值符合 valueN
        //要执行的陈述句
    break;
  default:
        //当 expression 的值都不符合上述条件
        //要执行的陈述句
    break;
}

例如:

let month = "9";
switch (month) {
  case "1":
    console.log("1月");
    break;
  case "2":
    console.log("2月");
    break;
  case "3":
    console.log("3月");
    break;
  case "4":
    console.log("4月");
    break;
  case "5":
    console.log("5月");
    break;
  case "6":
    console.log("6月");
    break;
  case "7":
    console.log("7月");
    break;
  case "8":
    console.log("8月");
    break;
  case "9":
    console.log("9月");
    break;
  case "10":
    console.log("10月");
    break;
  case "11":
    console.log("11月");
    break;
  case "12":
    console.log("12月");
    break;
  default:
    console.log("无法判断");
    break;
}

month = 9,符合 case "9",所以结果会印出 9 月。

参考资料:
MDN - Conditional (ternary) operator
How To Write Conditional Statements in JavaScript
MDN - switch


<<:  [重构倒数第27天] - 在 Vue 各种 CSS 的引入使用

>>:  【Day4】不可貌相的JS变数型别:如何练成一个物件

无线网路安全-邪恶的双胞胎(Evil Twin) & 流氓接入点(Rogue Access Point)

作为安全专家,我们应该尽最大努力做出风险意识,明智的决策。窃听,仅密文攻击,流氓接入点和邪恶双胞胎...

Day16 资料库-model的创建(2)

我们昨天教了最基本的model建立了,相信大家应该大致都懂那些流程了吧!(应该都懂吧...) 大家一...

25.unity动态加载(Resources.Load)

Resources.Load() unity手册 之前使用图片、文件都是将变数设定成public,然...

【16】如果把图片从RGB转成HSV和灰阶再拿去训练会怎样

colab连结 普遍我们拿来训练的图片都是RGB,普遍都是机器学习的CNN层找到一些局部特徵来做分类...

D3JsDay13 让资料拥有过渡动画,让各位观众看见神话—过渡动画

过渡动画 transition这个翻译成过渡的意思,一个吸引人的图表当中,加入了一点动画成分和过渡的...