使用 JS arguments 物件的 length 屬性可以獲取函數的實參個數。arguments 物件只能在函數體內可見,因此 arguments.length 也只能在函數體內使用。
使用函數物件的 length 屬性可以獲取函數的形參個數。該屬性為唯讀屬性,在函數體內、體外都可以使用。
範例
下面範例設計一個 checkArg() 函數,用來檢測一個函數的形參和實參是否一致,如果不一致則丟擲異常。
function checkArg(a) { //檢測函數實參與形參是否一致
if (a.length != a.callee.length) //如果實參與形參個數不同,則丟擲錯誤
throw new Error("實參和形參不一致");
}
function f(a, b) { //求兩個數的平均值
checkArg(arguments); //根據arguments來檢測函數實參和形參是否一致
return ((a * 1 ? a : 0) + (b * 1 ? b : 0)) / 2; //返回平均值
}
console.log(f(6)); //丟擲異常。呼叫函數f,傳入一個引數
溫馨提示:讀者可以轉到 arguments.callee 了解第 2 行程式碼中 callee 的用法。