# 筆記_重新認識JS:Day17函式裡的「參數」(上)_一級函式 --- ###### tags: `javascript` [JavaScript 一級函式 (First Class Functions)](https://wcc723.github.io/development/2020/09/24/first-class-function/) [重新認識 JavaScript: Day 17 函式裡的「參數」](https://ithelp.ithome.com.tw/articles/10192368) ---- 一級函式 一級函式並非是 JavaScript 專有的特性,只要該語言的「函式可被視為與其它變數一樣時」,就可以稱為該語言有一級函式的特性。 > functions in that language are treated like any other variable ## >> PHP 也支援一級函式 ---- JavaScript 的函式就具有以下特性: 1. 將函式指定到一個變數 2. 函式可作為參數來傳遞 3. 函式也可以被回傳(return) 4. 函式也是物件的物件(傳參考特性、具有屬性) ```javascript= // 把函式存入「變數」, 呼叫時執行 funcA(); var funcA = function(){}; // 把函式存入「陣列」, 呼叫時執行 funcB[0]() var funcB = [function(){}]; // 把函式存入「物件」的屬性, 呼叫時執行 // funcC.method() 或 funcC['method']() var funcC = { method: function(){} }; // 把函式當作「參數」,傳入到另一個函式中。 var funcD = function(func){ return func; }; // 「另一個」函式: 存放的是 funcD,而參數為一個匿名函式 var runFuncPassedToFuncD = funcD(function(){console.log('Hi');}); // 呼叫「另一個」函式 runFuncPassedToFuncD(); // "Hi" ``` ```javascript= // 函式是「物件」的一種,當然也可以有自己的「屬性」 var funcE = function(){}; funcE.answer = 'yup'; console.log(funcE.answer); // 'yup' ``` > 當我們透過 typeof 去檢查某個函式的時候,雖然你會得到 "function" 的結果,讓你以為 function 也是 JavaScript 定義的一種型別,但實際上它仍屬於 Object 的一種。 > 函式是一種物件,值也是物件。 你可以把它想像成是一種可以被呼叫 (be invoked) 的特殊物件 (值)。 ### 函式是一種物件,值也是物件 ### 函式是Object的一種 --- --- 練習: 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up