JavaScript 函數參數
JavaScript 函數對參數的值(arguments)沒有進行任何的檢查。
函數顯式參數與隱藏參數(arguments)
在先前的教程中,我們已經學習了函數的顯式參數:
functionName(parameter1, parameter2, parameter3) {
??? code to be executed
}
函數顯式參數在函數定義時列出。
函數隱藏參數(arguments)在函數調用時傳遞給函數真正的值。
參數規則
JavaScript 函數定義時參數沒有指定數據類型。
JavaScript 函數對隱藏參數(arguments)沒有進行檢測。
JavaScript 函數對隱藏參數(arguments)的個數沒有進行檢測。
默認參數
如果函數在調用時缺少參數,參數會默認設置為: undefined
有時這是可以接受的,但是建議最好為參數設置一個默認值:
實例
function myFunction(x, y) {
??? if (y === undefined) {
????????? y = 0;
??? }
}
嘗試一下 ? 或者,更簡單的方式:
實例
function myFunction(x, y) {
??? y = y || 0;
}
嘗試一下 ?
 | 如果y已經定義 , y || 返回 y, 因為 y 是 true, 否則返回 0, 因為 undefined 為 false。 |
如果函數調用時設置了過多的參數,參數將無法被引用,因為無法找到對應的參數名。 只能使用 arguments 對象來調用。
Arguments 對象
JavaScript 函數有個內置的對象 arguments 對象.
argument 對象包含了函數調用的參數數組。
通過這種方式你可以很方便的找到最后一個參數的值:
實例
x = findMax(1, 123, 500, 115, 44, 88);
function findMax() {
??? var i, max = 0;
??? 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;
}
嘗試一下 ?
通過值傳遞參數
在函數中調用的參數是函數的參數。
如果函數修改參數的值,將不會修改參數的初始值(在函數外定義)。
函數參數的改變不會影響函數外部的變量(局部變量)。
通過對象傳遞參數
在JavaScript中,可以引用對象的值。
因此我們在函數內部修改對象的屬性就會修改其初始的值。
修改對象屬性可作用于函數外部(全局變量)。