오늘은 어제 잠깐 언급했던 가변인자 함수에 대해 짚고 넘어가 보려고 한다. 가변인자 함수는 파라미터의 갯수가 정하지 않은 함수로 최소 한 개 이상의 파라미터를 받을 수 있다. 어제 문제처럼 파라미터의 갯수가 가변적인 상황에서 많이 사용한다.
가변인자 함수는 프로그램 언어에 따라 다르다. 자바스크립트에서는 파라미터의 타입에 상관없이 구현할 수 있으며, Arguments Object나 Spread Operator를 사용해서 받는다. 먼저 Arguments Object를 살펴보자
function test(){
console.log(arguments);
}
//test(1,2,3,4,5,6);
Arguments 사용할 때는 이렇게 함수 안에서 정의를 해주어야 한다.
Arguments Object를 사용해 인자값을 받았을때 출력해보면 다음과 같은 결과가 나온다.

언뜻 보면 배열과 같은 형태로 값을 주는 것 같지만, Object로 값을 받는다.
function test(...param){
console.log(param);
}
Spread Operator를 사용해 값을 받았을때는 다음과 같다.

Arguments와 다르게 배열로 값을 받는다.
요즘에 와서는 Arguments Object보다는 Spread Operator를 많이 사용한다. 그 이유는 Objcet 유사배열로 데이터를 받는 Arguments Object와 다르게 Spread Operator에서는 배열로 결과값을 받고 또 더 직관적이라는 장점이 있기 때문이다.
variadic function wiki : https://en.wikipedia.org/wiki/Variadic_function
rest parametsers mdn : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters
Spread syntax mdn : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax