# JavaScript - 函式 function ###### tags: `javascript` `function` ## 函式 function * function:設定指令 ### 寫法 ```javascript= // 宣告一個指令 // 機器人-早起活動-起床、刷牙、洗臉、出門 function morningAction(){ console.log('起床'); console.log('刷牙'); console.log('洗臉'); console.log('出門'); }; // 呼叫執行指令 morningAction(); >起床 >刷牙 >洗臉 >出門 ``` ### 設計多組函式流程 * 可有多組函式 * 函式裡面仍可以執行函式 * 常用功能獨立成一個函式 ```javascript= // 機器人-早晨活動 function morningAction() { console.log("起床"); // 函式裡面仍可以執行函式 cleanFace(); // console.log("刷牙"); // console.log("洗臉"); console.log("出門"); } // 機器人-晚上活動 function nightAction() { console.log("回家"); // 函式裡面仍可以執行函式 cleanFace(); // console.log("刷牙"); // console.log("洗臉"); console.log("睡覺"); } // 常用功能獨立成一個函式 // 清潔臉部動作 function cleanFace() { console.log("刷牙"); console.log("刮鬍子"); console.log("洗臉"); } morningAction(); nightAction(); cleanFace(); ``` ### 函式參數 ```javascript= // 自己命名參數為 num function a(num, num2) { console.log(num); console.log(num2); } a(1, 2); a(3, 4); console.log(num); // num is not defined // 參數跟變數不一樣,參數只存活在大括號 ``` >參數跟變數不一樣,參數只存活在大括號 ### 以函式設計小工具 ```javascript= // 函式 兩個數字相加小工具 function plus(num1, num2) { console.log(`您加總的數字為${num1 + num2}`); } plus(10, 15); >25 // 函式 兩個數字相減小工具 function minus(num1, num2) { console.log(`您相減的數字為${num1 - num2}`); } minus(10, 3); >7 // 函式 兩個數字相乘小工具 function multiply(num1, num2) { console.log(`您相乘的數字為${num1 * num2}`); } multiply(2, 6); >12 // 函式 兩個數字相除小工具 function divided(num1, num2) { console.log(`您相除的數字為${num1 / num2}`); } divided(10, 5); >2 ``` ### return * return 功能:回傳值 * return 可以中斷函式的執行,後面的函式就不跑了 ```javascript= // 國文分數+數學分數 的加總計算機 function calcTotalScore(chineseScore, mathScore) { // console.log(chineseScore + mathScore); let totalScore = chineseScore + mathScore; return totalScore; console.log("QQ"); } // return 可以中斷函式的執行,後面的函式就不跑了 // 運算 calcTotalScore(40, 60); // 將運算結果存起來 let markTotalScore = calcTotalScore(40, 60); // 若沒有 return,則結果仍為 undefined let tomTotalScore = calcTotalScore(100, 100); console.log(`Tom 的總分為 ${tomTotalScore}`); ``` * return 可以有多個 ```javascript= // return 可以有多個 // 檢查學生成績是否及格的函式 function checkScore(score) { // console.log(score); if (score >= 60) { return "及格"; } else { return "不及格"; } } let tomScore = checkScore(60); console.log(tomScore); let bobScore = checkScore(50); console.log(bobScore); ``` >寫程式沒有最佳解法,只有當下最適合 >小步測試,反覆驗證 ```javascript= // 取餘數 % == 0 為偶數 // 輸入數值 // let myInput = 11; // let checkNum = myInput % 2 == 0; // console.log(checkNum); // 紀錄函式執行次數 let count = 0; // 設計函式:判斷是否為偶數的工具 function checkNumber(myInput) { count += 1; if (myInput % 2 == 0) { // console.log('偶數'); return '偶數'; } else { // console.log('不是偶數'); return '不是偶數'; } } let checkSevenNum = checkNumber(7); console.log(checkSevenNum); let checkEightNum = checkNumber(8); console.log(checkEightNum); console.log(`目前記錄您已執行${count}次`); // checkNumber(12); // checkNumber(7); // checkNumber(3); // checkNumber(4); ``` * let 全域與區域變數邏輯 * 說明:函式程式碼的邏輯會從所在區域內先找尋有無該變數,若無則再往外層找尋有無該變數,若再沒有找到則顯示 "指定變數 is not defined"。 ```javascript= // 紀錄執行了幾次函式功能 let count = 0; function test() { count += 1; console.log('test1'); } test(); test(); test(); test(); console.log(`目前記錄您執行了${count}次`); ```