JS에서 함수는 함수 정의에 명시된 매개변수의 개수만큼만 매개변수를 전달하도록 제한하지 않습니다. 따라서 명시된 매개변수보다 적은 수의 매개변수 또는 많은 수의 매개변수를 함수 실행시에 전달할 수 있습니다.
1. 함수의 Default Parameter (매개변수 기본값)
- Default Parameter로 함수에 정의한 것보다 적은 수의 매개변수를 전달한 경우의 문제를 해결할 수 있습니다.
- Default Parameter란 함수의 인자를 전달하지 않거나 undefined를 전달할 경우 해당 인자의 초기값으로 사용할 값을 지정하는 문법을 말합니다. 함수를 선언할 때 함수의 인자 옆에
=
기호와 초기값으로 사용할 값을 지정합니다.
- Default Parameter로는 원시 타입으로 한정되지 않고 어떠한 표현식이든 올 수 있으며, Default Parameter는 함수를 호출할 때마다 새롭게 평가되므로, 표현식이 호출하는 시기에 따라 다른 값을 반환한다면 Default Parameter 또한 매번 다른 값이 될 수 있습니다.
- 또한 이러한 매번 평가되는 특성을 이용한다면, 나중에 선언된 매개변수의 기본값으로 앞에서 선언한 매개변수의 값을 사용할 수 있습니다.
2. 함수의 Rest Parameter(나머지 매개변수)
- ES6 에서는 rest parameter(나머지 매개변수)를 사용하여 함수에 정의된 것보다 많은 수의 매개변수를 전달한 경우에 대응할 수 있습니다.
- rest parameter는 함수에 전달된 매개변수의 나머지를 포함하는 배열입니다.
- rest parameter는 매개변수 앞에
...
을 붙여서 나타냅니다.
- rest parameter에는 두가지 제한이 있습니다.
- rest parameter는 하나밖에 올 수 없고 매개변수 선언의 마지막 위치에만 사용할 수 있다는 점입니다.
- 객체의 접근자 프로퍼티의 set 메서드에서는 사용할 수 없다는 점입니다. set 메서드는 인자를 하나밖에 받을 수 없기 때문입니다.