arguments是屬於js下的一箇中函式內建的一個物件,而執行函式方法的實參中的值都儲存於arguments中。簡單來說,arguments是屬於物件的一個特殊屬性,arguments物件就好像是陣列,但是它卻並不是陣列。其中argument物件包含了函式呼叫的引數陣列,通過這種方式就能夠很便捷的找到最後一個引數的值。
此外,arguments還有著很多的作用,比如實現方法的過載、實現遞迴等。
參考範例:
利用arguments實現方法的過載,程式碼如下:
function add() {
var len = arguments.length,
sum = 0;
for(;len--;){
sum += arguments[len];
}
return sum;
}
console.log( add(1,2,3) ); //6
console.log( add(1,3) ); //4
console.log( add(1,2,3,5,6,2,7) ); //26
遞迴,示例程式碼介紹如下:
求1到n的自然數之和,程式碼為:
function add(n){
if(n == 1) return 1;
else return n + arguments.callee(n-1);
}
其實callee對於沒有命名的函式呼叫自身時是很有用的,例如對於沒有命名的函式求1到n自然數之和,程式碼如下:
var result = function(x){
if(x == 1) return 1;
return x+arguments.callee(x-1);
}