標籤:數值 傳遞參數 最大的 個數 function ++ 擷取值 ack 擷取
函數顯式參數(Parameters)與隱式參數(Arguments)
函數顯式參數在函數定義時列出。
函數隱式參數在函數調用時傳遞給函數真正的值。
參數規則
JavaScript 函數定義時顯示參數沒有指定資料類型。
JavaScript 函數對隱式參數沒有進行類型檢測。
JavaScript 函數對隱式參數的個數沒有進行檢測。
預設參數
如果函數在調用時未提供隱式參數,參數會預設設定為: 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 對象
JavaScript 函數有個內建的對象 arguments 對象。
argument 對象包含了函數調用的參數數組。
通過這種方式你可以很方便的找到最大的一個參數的值:
x = findMax(1, 123, 500, 115, 44, 88); function findMax() { var i, max = arguments[0]; if(arguments.length < 2) return max; 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 隱式參數通過值來傳遞:函數僅僅只是擷取值。
如果函數修改參數的值,不會修改顯式參數的初始值(在函數外定義)。
隱式參數的改變在函數外是不可見的。
通過對象傳遞參數
在JavaScript中,可以引用對象的值。
因此我們在函數內部修改對象的屬性就會修改其初始的值。
修改對象屬性可作用於函數外部(全域變數)。
修改對象屬性在函數外是可見的。
JavaScript 函數參數