JavaScript 函式引數
JavaScript 的 function
不會執行任何引數值(實參)的檢查。
函式引數和實參
在本教程前面,您已經瞭解到函式可以有引數
function functionName(parameter1, parameter2, parameter3) {
// 要執行的程式碼
}
函式引數是在函式定義中列出的名稱。
函式實參是傳遞給函式(並由函式接收)的實際值。
引數規則
JavaScript 函式定義不為引數指定資料型別。
JavaScript 函式不對傳遞的實參進行型別檢查。
JavaScript 函式不檢查接收到的實引數量。
預設引數
如果一個函式在呼叫時缺少實參(少於宣告的數量),則缺失的值將設定為 undefined
。
有時這是可以接受的,但有時最好為引數分配一個預設值
預設引數值
ES6 允許函式引數具有預設值。
示例
如果未傳遞 y 或 y 為 undefined,則 y = 10。
function myFunction(x, y = 10) {
return x + y;
}
myFunction(5);
自己動手試一試 »
函式剩餘引數 (Rest Parameter)
剩餘引數 (...) 允許函式將不定數量的實參視為一個數組。
示例
function sum(...args) {
let sum = 0;
for (let arg of args) sum += arg;
return sum;
}
let x = sum(4, 9, 16, 25, 29, 100, 66, 77);
自己動手試一試 »
arguments 物件
JavaScript 函式有一個內建物件,稱為 arguments 物件。
arguments 物件包含一個函式被呼叫(執行)時使用的實參的陣列。
這樣,您就可以簡單地使用一個函式來查詢(例如)數字列表中的最大值。
示例
x = findMax(1, 123, 500, 115, 44, 88);
function findMax() {
let max = -Infinity;
for (let i = 0; i < arguments.length; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
}
return max;
}
自己動手試一試 »
或者建立一個函式來對所有輸入值求和
示例
x = sumAll(1, 123, 500, 115, 44, 88);
function sumAll() {
let sum = 0;
for (let i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum;
}
自己動手試一試 »
如果函式被呼叫時實參過多(多於宣告的數量),這些實參可以透過arguments 物件來訪問。
實參按值傳遞
函式呼叫中的引數是函式的實參。
JavaScript 實參是按值傳遞的:函式只知道值,而不知道實參的位置。
如果函式更改了實參的值,它不會改變引數的原始值。
對實參的更改在函式外部是不可見的(不反映的)。
物件按引用傳遞
在 JavaScript 中,物件引用是值。
因此,物件將表現得好像是按引用傳遞的:
如果函式更改了物件屬性,它會更改原始值。
對物件屬性的更改在函式外部是可見的(反映的)。