我們又回到用函數 來畫4個溫斯頓的程式了
我修改了一下
以便顯示溫斯頓不同人生階段的年紀
你等一下就會明白
我要告訴你一件關於溫斯頓的事：
溫斯頓愛死甜甜圈了
他每天吃3個
難怪一張臉又大又黃
為了提醒他 甜甜圈對身體不好
我想修改一下程式
以便顯示於每個年紀 他累計吃下多少甜甜圈
例如，他2歲時
他共吃了3﹡365﹡2
1天3個，1年365天，2年
讓數量顯示在標頭下
哇！2千個甜甜圈
對2歲娃來說太多了
現在他14歲
他吃了 3﹡365﹡14
共吃了1萬5千個甜甜圈
我一直這樣算也行 但我開始發現一個規律
我正在重複我的運算
而我只改變其中的一樣東西：年數
每當我看到像這樣重複的程式碼
我便想:「嗯，這能否寫成函數?」
對，我們絕對可以的
我們動手吧
我在這裡定義函數
叫它做 calcTotalDonuts = function
裡面只有一個參數，年數
因為那是我們每次做這計算時 唯一變動的東西
程式裡面，我們做計算
將它存為變數 也就是 3﹡365﹡numYears
我們現在有了這函數
我將利用 calcTotalDonuts 去取代在這裏的表示式
以便召喚程式，及傳遞數值 2
好，現在我們看不到任何總數
嗯，怎麼了呢?
我們的函式確實計算了總數
在這
但它沒有告知任何人那總數
好比學校老師點你回答問題
而你只在腦中回答
因爲你太害羞去講出答案
你有答案，但老師永遠不會知道
如果我們想函數 傳某值給召喚它的人
函數就要寫明去回傳 (return) 那值
要函數回傳一個值 我們須輸入 return
不管它想回傳什麼
可以是變數、數值或表示式
這裡我們指明 return totalDonuts
所以誰召喚此函數 誰就會得到這回答
總計顯示出來了, 耶！
這裡我們可簡化函數
不必儲存成變數
只需把整個表示式
寫在 return 裡 函數就變成一行
好
現在我們可以來回顧和計算
每個年紀吃下的甜甜圈總量
就是召喚這函數 傳遞年數
嗯，這裡是 calcTotalDonuts(25)
位置沒錯 calcTotalDonuts(65)
好！哇！如果他吃到65歲
他將吃下7萬個甜甜圈 那真是超多甜甜圈
我不覺得溫斯頓能辦到（笑）
不過現在我們寫了這函數
做些小調整並不難
好比溫斯頓看到這結果
說: 「噢！這太多了 如果我1天只吃1個？」
那我們可以來到這 修改這一個數字
所有都改好了
2萬3千個，還是很多
也許溫斯頓說: 「好吧好吧！如果我1週吃1個呢？」
嗯，這比較合理
那我們改 365 為 50
因為一年有50週，對吧?
好，看來好多了，是吧？ 3千個，那蠻合理的
所以你看，運用函數和數值回傳
我們能保存程式碼，亦能保護生命