---
# System prepended metadata

title: 第四堂：函式設計之術
tags: [JS 直播班 - 2021 春季班]

---

---
tags: JS 直播班 - 2021 春季班
---

# 第四堂：函式設計之術


* [報到](https://rpg.hexschool.com/training/17/calendar) Code：`O9z4YvjBpREs`
* [BMI Kata 武道大會](https://forms.gle/Bij2WQZWTnDnW8TB6)
* [153 位投稿第二關主線！](https://docs.google.com/spreadsheets/d/12QrToUpHacFsSYkeCqSfOUBbt4G3nW9SPxodI6TITx4/edit#gid=1814458644)，之後想補充可自行在下方新增。

## 批改部分
1. 目前維持在 3~4 天內，一週內沒回覆請私訊穎旻助教
3. 想參考解答，可以到「[觀看其他同學攻略](https://rpg.hexschool.com/training/17/task/self)」
4. 學習上有問題可都透過 Slack 詢問

## function 寫法教學 - 設定指令

- 以一天會做的行為當作例子
- 參數寫法介紹
    - 加法器
- return 寫法介紹
    - let 宣告
    - return 多個範例

## if 與 function 的差別
- 直接寫 if 的話，.js 裡只會執行一次
- 寫 function 的話，可以依照自己需求，執行多次執行指令

## input output 練習
* [示意流程圖](https://whimsical.com/RTJhrsaGwpZ8NbXvQjutB7)

### 題目列表
**字串相加**
``` javascript
//input
talk("早上好");
talk("晚上好");

// output
console.log("hi，早上好");
console.log("hi，晚上好");
```
**數字處理**
``` javascript
let data = 0;
//input
count(2);
count(3);
count(5);

// output
console.log(2);
console.log(5);
console.log(10);
```

**數字 return**


``` javascript
//input
let a = count(2); // 4
let b = count(3); // 9
let c = count(5); //25
```

**兩位數四舍五入**
``` javascript
let a = twoFixed(1.8888) // 1.89
let b = twoFixed(3.1234) // 3.13
```

**BMI** 

``` javascript
let bmi = calcBmi(178,69) // output:21.78
```

**檢查是否需要帶雨具+if**

``` JavaScript
let a = checkWeater("雨天"); // 要帶雨具
let b = checkWeater("晴天"); //不用帶雨具
```

**增加陣列資料**

``` JavaScript
let data = [];
add("hello"); 
add("你好嗎？"); 

// data output ["hello","你好嗎？"]

```

**增加陣列物件資料**

``` JavaScript
let data = [];
add("洧杰","男生"); 
add("葉子","女生"); 

// data output [{name:"洧杰",sex:"男生"},{name:"葉子",sex:"女生"}]

```
**取物件資料** 
``` JavaScript
const bmiStatesData = {
  "overThin": {
    "state": "過輕",
    "color": "藍色"
  },
  "normal": {
    "state": "正常",
    "color": "紅色"
  }
}
checkBmiStates("overThin"); //你的體重過輕，指數為藍色
checkBmiStates("normal"); //你的體重正常，指數為紅色
```

## 抽獎

``` JavaScript
function getRandom(x){
    return Math.floor(Math.random()*x);
};
//https://ithelp.ithome.com.tw/articles/10197904
```





## 第四關主線任務 BMI Kata

* <a href="https://rpg.hexschool.com/training/17/task?type=detail&id=171" target="_top">第四關主線任務</a>

達求職門檻工程師水準等級為 10 分鐘，每日練一遍當起手式，3/8 開始到 3/19 每天早上 9:05 發 Slack 訊息，張貼自己的練功情況




> [洧杰練 Vim 範例](https://www.youtube.com/watch?v=eRLAKhi-6HE&list=PL3TsqJC8EmwTSlkFE7Zu-Bt6HqDG1fH_U)