Latest web development tutorials
×

JavaScript 教程

JavaScript 教程 JavaScript 簡介 JavaScript 用法 JavaScript 輸出 JavaScript 語法 JavaScript 語句 JavaScript 註釋 JavaScript 變量 JavaScript 數據類型 JavaScript 對象 JavaScript 函數 JavaScript 作用域 JavaScript 事件 JavaScript 字符串 JavaScript 運算符 JavaScript 比較 JavaScript If...Else JavaScript switch JavaScript for JavaScript while JavaScript Break & Continue JavaScript typeof JavaScript 類型轉換 JavaScript 正則表達式 JavaScript 錯誤 JavaScript 調試 JavaScript 變量提升 JavaScript 嚴格模式 JavaScript 使用誤區 JavaScript 表單驗證 JavaScript 保留關鍵字 JavaScript JSON JavaScript void JavaScript 代碼規範

JS 函數

JavaScript 函數定義 JavaScript 函數參數 JavaScript 函數調用 JavaScript 閉包

JS HTML DOM

DOM 簡介 DOM HTML DOM CSS DOM 事件 DOM EventListener DOM 元素

JS 高級教程

JavaScript 對象 JavaScript Number JavaScript String JavaScript Date JavaScript Array JavaScript Boolean JavaScript Math JavaScript RegExp 對象

JS 瀏覽器 BOM

JavaScript Window JavaScript Window Screen JavaScript Window Location JavaScript Window History JavaScript Navigator JavaScript 彈窗 JavaScript 計時事件 JavaScript Cookies

JS 庫

JavaScript 庫 JavaScript 測試 jQuery JavaScript 測試 Prototype

JS 實例

JavaScript 實例 JavaScript 對象實例 JavaScript 瀏覽器對象實例 JavaScript HTML DOM 實例 JavaScript 總結

JS 參考手冊

JavaScript 對象 HTML DOM 對象

JavaScript 函數參數

JavaScript 函數對參數的值沒有進行任何的檢查。


函數顯式參數(Parameters)與隱式參數(Arguments)

在先前的教程中,我們已經學習了函數的顯式參數:

functionName ( parameter1, parameter2, parameter3 ) {
//要執行的代碼……
}

函數顯式參數在函數定義時列出。

函數隱式參數在函數調用時傳遞給函數真正的值。


參數規則

JavaScript 函數定義時顯示​​參數沒有指定數據類型。

JavaScript 函數對隱式參數沒有進行類型檢測。

JavaScript 函數對隱式參數的個數沒有進行檢測。


默認參數

如果函數在調用時未提供隱式參數,參數會默認設置為: undefined

有時這是可以接受的,但是建議最好為參數設置一個默認值:

實例

function myFunction ( x , y ) { if ( y === undefined ) { y = 0 ; } }

嘗試一下»

或者,更簡單的方式:

實例

function myFunction ( x , y ) { y = y || 0 ; }

嘗試一下»

Note 如果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 隱式參數通過值來傳遞:函數僅僅只是獲取值。

如果函數修改參數的值,不會修改顯式參數的初始值(在函數外定義)。

隱式參數的改變在函數外是不可見的。


通過對像傳遞參數

在JavaScript中,可以引用對象的值。

因此我們在函數內部修改對象的屬性就會修改其初始的值。

修改對象屬性可作用於函數外部(全局變量)。

修改對象屬性在函數外是可見的。