JavaScript 函數的引數包括以下兩種型別:
-
形參:在定義函數時,宣告的引數變數僅在函數內部可見。
-
實參:在呼叫函數時,實際傳入的值。
範例1
定義 JavaScript 函數時,可以設定零個或多個引數。
function f(a, b) { //設定形參a和b
return a + b;
}
var x = 1, y = 2; //宣告並初始化變數
console.log(f(x,y)); //呼叫函數並傳遞實參
在上面範例中,a、b 就是形參,而在呼叫函數時向函數傳遞的變數 x、y 就是實參。
一般情況下,函數的形參和實引數量應該相同,但是 JavaScript 並沒有要求形參和實參必須相同。在特殊情況下,函數的形參和實引數量可以不相同。
範例2
如果函數實引數量少於形引數量,那麼多出來的形參的值預設為 undefined。
(function (a,b) { //定義函數,包含兩個形參
console.log(typeof a); //返回number
console.log(typeof b); //返回undefined
})(1); //呼叫函數,傳遞一個實參
範例3
如果函數實引數量多於形引數量,那麼多出來的實參就不能夠通過形參進行存取,函數會忽略掉多於的實參。在這個範例中,實參 3 和 4 就被忽略掉了。
(function (a,b) { //定義函數,包含兩個形參
console.log(a); //返回1
console.log(b); //返回2
})(1,2,3,4); //呼叫函數,傳入四個實參值
在實際應用中,經常出現實引數量少於形引數量的情況,但是在函數內依然可以使用這些形參,這是因為在定義函數時,已經對它們進行了初始化,設定了預設值。在呼叫函數時,如果使用者不傳遞或少傳遞引數,則函數會採用預設值。而形引數量少於實參的情況比較少見,這種情況一般發生在引數數量不確定的函數中。