JS 基礎篇 (6) 函式的基本概念
函式是物件的一種
在前面介紹變數型別的時候曾經說過,除了基本型別以外的都是物件。
函式
「函式」指的是將一或多段程式指令包裝起來,可以重複使用,也方便維護。
宣告函式的方法有好幾種,但不管是什麼方式,通常一個函式會包含三個部分:
- 函式的名稱 (也可能沒有名稱)
- 在括號 ( ) 中的部分,稱為「參數 (arguments) 」,參數與參數之間會用逗號 , 隔開
- 在大括號 { } 內的部分,內含需要重複執行的內容,是函式功能的主要區塊。
定義函式的方式
- 函式宣告: 使用 function 關鍵字聲明函式,並指定函式名稱。函式聲明可以在程式碼的任何位置進行調用,因為它們會被提升(hoisted)至作用域的頂部。
1 | function greet(name) { |
- 函式表達式: 將函式賦值給一個變數,這種方式下,函式的名稱是可選的,也可以是匿名的。
1 | var greet = function(name) { |
- new Function
以使用 new Function 建構函式。new Function 允許你在執行時動態建立一個函式,你只需要提供函式的參數和函式體。
1 | var myFunction = new Function(arg1, arg2, ..., body); |
- arg1, arg2, … 是函式的參數。這些是字串,每個字串代表一個函式參數的名稱。
- body 是函式的內容,也是一個字串,代表了函式的主體部分
範例
1 | var addFunction = new Function('a', 'b', 'return a + b;'); |
雖然 new Function 提供了動態建立函式的能力,但應該小心使用它,因為它的使用可能會讓程式碼難以閱讀和維護。通常情況下,函式聲明、函式表達式更加直觀和易於理解。
arguments 物件
Function被呼叫時會產生 arguments 物件,用來記錄傳入的參數。 arguments不是陣列,只是具有索引特性的物件,內建.length屬性。
1 | function sum() { |
要注意的是箭頭函式沒有 arguments 物件,而是改用其餘參數的方式取得
const func = (...args) => console.log(args)
;