arguments.length、arguments.callee
arguments object 有兩種屬性,分別是 arguments.length、arguments.callee。
一、arguments.length
function sum() { var result = 0; for (var i = 0; i < arguments.length; i++) { result = result + arguments[i]; } console.log(result); } sum(1, 2, 3); sum(1, 3, 5, 7);
結果為
說明:
當你需要傳入不定數目的 arguments 進方法時,
你可以利用 arguments object,藉由 arguments.length 來取得 arguments 的傳入個數,
再利用 index 依依地取值出來。
二、arguments.callee
function show(a, b) { console.log(arguments.length); console.log(arguments.callee); console.log(arguments.callee.name); console.log(arguments.callee.length); } show(1, 3, 5, 7);
結果為
說明:
arguments.callee 物件指的是該方法的本體,
你可以利用 arguments.callee.name 去取得該方法的名稱,
也可以利用 arguments.callee.length 去取得該方法的 parameters 個數,
三、錯誤語法
arguments 物件不支援 arrow function,如下範例
var sum = () => { var result = 0; for (var i = 0; i < arguments.length; i++) { result = result + arguments[i]; } console.log(result); }; sum(1, 2, 3); sum(1, 3, 5, 7);