慶祝學呀
百萬
造訪!
尚未建立名稱
能量:0
我的帳號中心
問 學Bot 任何問題!
首頁&搜尋
最愛&收藏
所有課程
分享資源
帳號設定
關於學呀
線上募款
章節設定
章節名稱
章節類別
章節標籤
或者建立新標籤
章節內容
全螢幕編輯與預覽
# 函數的應用 ::: suggestion 這個章節的重點,在於帶領讀者理解物件導向的概念,而非介紹單一個程式語法。此章節的程式語法和 JavaScript 等程式語言相近,但並非任何真實程式語言。請專注於章節中的概念部分,而非語法部分。 ::: 除了回傳數字之外,其實函數還有很多實用的地方,它不只能用來回傳數字,還能用來回傳其他資料。另外,它也能用來把看起來很複雜的程式,變得簡單易懂!幾個常見的用法如下: ## 回傳各類資料 經常我們定義一個函數,希望它回傳的不是數字。你可能會問說,**數學中的函數不就是用來回傳數字嗎?**話是這麼說沒有錯,但是在寫程式時,我們可以不需要被數字限制住,可以回傳很多不同的資料型態。 例如我們可以寫一個函數叫做 `isIn` ,搜尋某一字串是否在一個陣列裡面,如果有,就回傳 `true`,反之,則回傳 `false`。 ``` function isIn(list, goal){ for(item in list){ if(item == goal){ return true; } } return false; } ``` 在此值得注意的是,**函數一但回傳了值,剩餘的程式碼便不會再執行**。讓我們試著呼叫一下這個函數: ``` names = ["Sam", "James", "Mandy"]; search = "Jenny"; print(isIn(names, search)); ``` 電腦在執行時,藉由 `isIn` 函數中的 `for` 迴圈一一看過 `list` 變數中的每一個項目,如果有項目與變數 `goal` 相等,便回傳 `true`,否則則回傳 `false`。因為 `search` 變數所代表的「Jenny」並沒有在 `names` 中出現,因此螢幕上將會印出 `false`。 這個例子證明了程式中的函數不一定要回傳數字,也可以是布林值、字串等各種資料型態。 ## 不回傳值的函數 有時候,函數可以不回傳任何的值,也就是說,**有些函數可以不用有** `return`,但你可能會好奇,函數不就是用來得到數值的嗎?那如果不回傳值,這函數存在的意義是什麼? 假設有一段程式碼,我們會在程式中的不同地方**重複**用到,像下面這樣: ``` link1 = "example.com"; link1 = "www." + link1; link1 = "https://" + link1; go(link1); link2 = "good.com"; link2 = "www." + link2;link2 = "https://" + link2; go(link2); link3 = "yes.com"; link3 = "www." + link3; link3 = "https://" + link3; go(link3); ``` 我們可以看到,程式在執行時,我們不停執行同樣的內容,差別只在於變數所代表的值不同。在這種狀況下,倘若我們將這段程式改作函數的形式,將會方便很多: ``` /*宣告函數*/ function run(link){ link = "www." + link; link = "https://" + link; go(link); } /*執行函數*/ run("example.com"); run("good.com"); run("yes.com"); ``` 如此一來,重複的程式只需要寫一次,而且當我們要修改程式時,也只需要在一個地方修改,是不是很方便呢?不回傳值的函數,雖然並不會回傳運算的結果,但是卻能讓程式更加簡單易懂,提升我們寫程式的效率。
儲存章節
前往實際頁面