---
# System prepended metadata

title: BMI

---

# BMI


## 宣告變數

```javascript=
let variable = value;
```

等同於

```javascript=
let variable;
variable = value;
```

意思是：
1. 宣告一個名稱為`variable`的變數
2. 將變數`variable`的值設為`value`
3. `=` ： assign，通常翻譯作「賦值」，將右邊的值賦與左邊的變數
4. 因此如 `2 = age` 這樣是不合法(造成程式跳錯誤)，因為試圖修改常數2


---

## 宣告函數

```javascript=
const BMI = function(weight , height){
    let result = 0;
    /* ...
     * 
     * 
     */
    return result; 
}
```

這裡的 `weight` 、 `height` 稱為參數，在block內 {} 可以直接使用，
可以想像成
```javascript=
const BMI = function(let weight , height){ 
}
```

---

```javascript=
const BMI = function(weight , height){
    let weight = w
    let height= h
    return w / ((h/100)**2); 
}
```

---
> 第二行 將weight指定為w
第三行 將height指定為h

1. 宣告變數的方向相反了。
2. 因為 `weight` `height` 在函數範圍(block)內可以直接呼叫使用，不需要再另外宣告w、h進行後續操作。
3. 為了可讀性，避免無意義的變數名稱。

---

> 第四行
使用return計算 w除以(（h除以100）平方)

```javascript=
return value
```

return 的功能是單純把程式執行交回主程序，並回傳值

較恰當的說法是
return 回傳了 `w除以(（h除以100）平方)` 運算完的結果