---
# System prepended metadata

title: 第二堂週末任務
tags: [JS 直播班 - 2021 秋季班, 六角學院]

---

# 第二堂週末任務
###### tags: `六角學院` `JS 直播班 - 2021 秋季班`

目錄
---
* [JS 常見面試題目](#JS-常見面試題目)
    * [if 與 switch 的使用時機？](#if-與-switch-的使用時機？)
    * [何謂強制轉型、以及如何作到轉換型別？](#何謂強制轉型、以及如何作到轉換型別？)
    * [何謂表達式(Expression)與陳述式(Statement)？](#何謂表達式(Expression)與陳述式(Statement)？(需看到函式)-MVP-送-JS-研討會票種)
* [流程圖接龍](#流程圖接龍)
* [PVP 團戰 - 第四週闖關人數](#PVP-團戰---第四週闖關人數)

## JS 常見面試題目
### if 與 switch 的使用時機？
- **if else**：如果條件為不同區間、範圍取值（eg. 小於10、大於1），較適合。
- **switch case**：如果有確定的值(eg. 1, 2, 3...)，或是了解「會有那些狀態」，較適合使用。

#### switch 語法
規則：
- 拿 switch 後的值與 case 後的值做比較。
- switch 的比較是使用較嚴謹的 === 做比較。
- 一個 case 結束後，須加上 break 將其結束，否則不管值是否符合，皆會從上到下執行到結束。
- default 表示若所有 case 都不符合的話，將會執行 default 後的程式碼(通常放置最後面，但沒有強烈規定)。

語法舉例：
```javascript=
let a = 1;
switch (a) { // expression
  case 1: // value1
      console.log("case 1")
      break;
  case 2: // value2
      console.log("case 2")
      break;
  case 3: // value3
      console.log("case 3")
      break;
  default: //當 expression 的值都不符合上述條件
      console.log("都不符合")
      break;
}

// 印 "case 1"
```

值與值的比較：
(此範例可能比較適合用 if / else 來寫，這邊只是想表示 switch 是拿值做比較而不是帶入運算子做比較)
```javascript=
function checkAge(age){
  switch(age){
    case (age > 18):
      console.log('case 1')
      break
    case (age == 18):
      console.log('case 2')
      break
    case (age < 18):
      console.log('case 3')
      break
    default:
      console.log("didn't match any one")
      break
  }
}
checkAge(12) // didn't match any one

// 比較時的過程
// age === (age > 18)
// 12 === true 
// 數字 12 不會等於布林值 true
// return false
```

#### if-else 語法
小小規則：
- if (條件式)：條件式回傳 Boolean。
- if/else 只能有一個 (else 也可省略)，else if 可以有多個。
- 條件式若是比較運算子的話，需要自己定義(==相對較嚴謹==)。

語法舉例：
```javascript=
function checkAge(age){
  if(age > 18){
    console.log('case 1')
  } else if(age == 18){
    console.log('case 2')
  } else if(age < 18){
    console.log('case 3')
  } else{
    console.log("didn't match any one")
  }
}
checkAge(12) // 'case 3'

// 比較時的過程
// (age < 18)
// 12 < 18  => true 
// 執行以下程式碼
// return 'case 3'
```

#### if-else / switch 優缺點比較
|| if-else | switch |
|:-:|:-:|:-:|
|使用時機|有範圍的值 or 邏輯少(較少巢狀)|一個明確條件的值|
|效能||✔|
|易讀性|✔||
|嚴謹度|需要自己設定|預設較嚴謹|

### 何謂強制轉型、以及如何作到轉換型別？

### 何謂表達式(Expression)與陳述式(Statement)？(需看到函式) **MVP 送 JS 研討會票種**

#### 參考資料
* []()
