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);