JavaScript 函數參數
JavaScript 函數不會對參數值進行任何檢查。
函數參數
在本教程中稍早的時間,您已經學到了函數可以擁有參數:
functionName(parameter1, parameter2, parameter3) { 要執行的代碼 }
函數參數(parameter)指的是在函數定義中列出的名稱。
函數參數(argument)指的是傳遞到函數或由函數接收到的真實值。
參數規則
JavaScript 函數定義不會為參數(parameter)規定數據類型。
JavaScript 函數不會對所傳遞的參數(argument)實行類型檢查。
JavaScript 函數不會檢查所接收參數(argument)的數量。
參數默認
如果調用參數時省略了參數(少于被聲明的數量),則丟失的值被設置為:undefined。
有時這是可以接受的,但是有時最好給參數指定默認值:
實例
function myFunction(x, y) { if (y === undefined) { y = 0; } }
如果函數調用的參數太多(超過聲明),則可以使用 arguments 對象來達到這些參數。
arguments 對象
JavaScript 函數有一個名為 arguments 對象的內置對象。
arguments 對象包含函數調用時使用的參數數組。
這樣,您就可以簡單地使用函數來查找(例如)數字列表中的最高值:
實例
x = findMax(1, 123, 500, 115, 44, 88); function findMax() { var i; var max = -Infinity; for (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() { var i, sum = 0; for (i = 0; i < arguments.length; i++) { sum += arguments[i]; } return sum; }
參數通過值傳遞
函數調用中的參數(parameter)是函數的參數(argument)。
JavaScript 參數通過值傳遞:函數只知道值,而不是參數的位置。
如果函數改變了參數的值,它不會改變參數的原始值。
參數的改變在函數之外是不可見的。
對象是由引用傳遞的
在 JavaScript 中,對象引用是值。
正因如此,對象的行為就像它們通過引用來傳遞:
如果函數改變了對象屬性,它也改變了原始值。
對象屬性的改變在函數之外是可見的。