자바스크립트에서 인수(argument)와 매개변수(parameter)의 차이가 무엇인지, 그리고 두 용어를 구분해 사용하는 것이 실제로 중요한지 알아봅니다.
자바스크립트의 인수(argument)와 매개변수(parameter)란?
자바스크립트에서 함수를 실행할 때는 함수를 호출하는 시점에 특정 정보를 함수에 전달할 수 있습니다.
이렇게 전달되는 정보를 '인수(argument)' 또는 '매개변수(parameter)'라고 부르는데, 대부분의 개발자는 사실상 이 두 용어를 혼용해서 사용합니다.
예시를 살펴보겠습니다:
function greetings(name) {
console.log(name)
}
greetings('Anna')
여기서 'Anna' 부분이 바로 greetings() 함수가 호출될 때 전달되는 값입니다.
그렇다면 이것은 인수일까요, 아니면 매개변수일까요?
리액트 코어 팀 출신 개발자 Dan Abramov는 자바스크립트에서 인수와 매개변수의 관계에 대해 다음과 같이 설명합니다:
출처함수 정의 쪽을 보느냐, 함수 호출 쪽을 보느냐에 따라 'arguments(인수)' 또는 'parameters(매개변수)'라고 부릅니다. 다만 이러한 용어 구분은 지나치게 학문적인 것이며, 실제로는 두 용어가 혼용되어 사용됩니다.
다시 말해, 커뮤니케이션의 관점에서라면 두 용어를 언제 사용해야 하는지 분명한 차이가 존재합니다:
- 매개변수(Parameter): 함수 정부 내부에서 전달받는 값을 가리킵니다.
- 인수(Argument): 함수를 호출할 때 실제로 전달되는 값을 가리킵니다.
따라서 위 예시를 교과서적으로 정확한 용어로 표현하면 다음과 같습니다:
- 우리는 함수에 인수(argument)인
Anna를 전달하고 있습니다. function greetings(name)안의name부분이 바로 매개변수(parameter)입니다.
하지만 올바른 순간에 정확한 용어를 사용한다고 해서 코드 실행이나 이해에 아무런 영향을 주지는 않습니다.
개발 과정에서 걱정거리가 얼마나 많은데 굳이 이것까지 신경 쓸 필요는 없습니다. 단, 좋은 코드를 작성하는 능력보다 이런 용어 구분을 훨씬 중요하게 여기는 면접관을 만난다면 이야기가 달라지겠죠.