用一個簡單的例子示範JavaScript的可變參數函數 function demo () { console.log(arguments); } demo (1, 2 , 3 , 4); // output [1, 2, 3, 4] 可以從這邊得知 JavaScript 實際上是用類似陣列的方式處理傳入的參數 傳進去的所有參數會用 arguments 這個函式自身的變數儲存 即使函式撰寫時不註明會使用到的參數也不會影響 C++或Java的 Programmer 應該都很習慣 function overloading(method overloading)的使用 只要參數不同,就會是不同版本的函式 但是對 JavaScript 就不是如此 它會將同名的函式視作相同的物件,只是使用者傳入長度不一樣的陣列 function overloading的寫法在JavaScript會變成覆寫函式,算是初學者要注意的地方 JavaScript的arguments物件只要用陣列的一般處理方式就能接觸到所有參數 function demo2 () { for(var i = 0, max = arguments.length; i < max; i++){ console.log(arguments[i]); } } 使用可變參數函式還可能碰到一個需求 怎麼樣將一個可變參數的函式傳遞到另一個可變參數函式呢? function demo3 () { demo2.apply(this, arguments); } demo3(1, "test") // output 1 test 這個是我覺得比較簡潔的方式 用JavaScript function 的 apply 機制讓它過程中套用到另一個函式