javascript 함수 내에서 사용할 수 있는 특별한 객체, 함수가 호출될 때 전달된 모든 인자들을 포함하고 있다.
다음과 같은 속성을 사용할 수 있다.
function sum(){
var total = 0;
for( var i = 0; i<arguments.length;i++){
total += arguments[i];
}
return total;
}
console.log(sum(1,2,3)); //6
console.log(sum(4,5,6,7)); //22
우선 고정인자를 사용하는 averageOfArray
를 살펴보자
function averageOfArray(a){
for( var i = 0, sum = 0, n = a.length ; i < n;i++){
sum += a[i];
}
return sum/n
}
averageOfArray([2,7,1,8,2,8,1,8]); //4.625
그리고 가변인자 average
의 함수도 살펴보자
function average(){
for(var i = 0, sum = 0, n = arguments.length i < n;i++){
sum += arguments[i];
}
return sum/n;
}
arguments
는 average
에 매개변수로 전달되어진 값들이 arguments
에 저장된다.
만약 가변인자 arguments
를 계산된 배열로 호출하고 싶다면
방법1
var list = [2,7,1,8,2,8,1,8];
average.apply(null, list);
방법2
function average(){
return averageOfArray(arguments); //가변인자가 계산된 배열의 형태로 전달됨
}
가변인자로 받은후에 argument
배열로 넘겨준다면 apply
를 사용하지 않고 깔끔한 코드를 만들 수 있다.
arguments
객체를 사용하라apply
메서드를 사용할 필요가 없도록 고정인자 버전의 가변인자 함수를 추가로 제공하는 것을 고려하라