Programming

[JS] parameter와 argument는 뭐가 다를까?

Yepchani 2024. 11. 9. 20:27
반응형

들어가며

개발을 하다 보면 parameter와 argument에 대해 많이 듣게 되는데요. 이 두 용어가 혼용되기도 하다 보니 헷갈릴 때가 있습니다.

이번 시간에는 과연 이 둘이 대체 뭐가 다른지 알아보도록 하겠습니다.

 

Paramater

매개변수라고도 불립니다. 함수를 정의할 때 입력값을 받을 수 있는 변수입니다.

function foo(parameter1, parameter2) {
	// some code
}

 

Argument

인자라고도 불립니다. 함수를 호출할 때 함수에 입력으로 전달되는 값입니다. 값을 직접 전달할 수도 있고, 변수에 담아 전달할 수도 있습니다.

const argument1 = 'say';

foo(argument1, 'hi');

function foo(parameter1, parameter2) {
  console.log(parameter1); // Output = 'say'
  console.log(parameter2); // Output = 'hi'
}

 

주의할 점

argument와 paramater는 개수와 순서가 일치해야 합니다.

순서가 바뀌는 경우 원하는 결과가 나오지 않을 수 있다는 것은 쉽게 생각할 수 있습니다. 그럼 개수의 경우에는 어떨까요?

 

1. argument와 parameter의 개수가 같은 경우

const argument1 = 'say';
const argument2 = 'hi';

foo(argument1, argument2); // 두 개의 argument 전달

// 함수에서 두 개의 값을 받아야 함
function foo(parameter1, parameter2) {
  console.log(parameter1); // Output = 'say'
  console.log(parameter2); // Output = 'hi'
}

함수가 정상적으로 호출되고 원하는 결과를 얻을 수 있습니다.

 

2. argument가 더 많은 경우

const argument1 = 'say';
const argument2 = 'hi';

foo(argument1, argument2); // 두 개의 argument 전달

// 함수에서 하나의 값을 받아야 함
function foo(parameter) {
  console.log(parameter); // Output = 'say'
}

언어에 따라 추가된 argument는 무시되거나, 'too many arguments' 와 같은 에러 메시지를 출력할 수 있습니다.

자바스크립트의 경우, 추가된 argument는 무시됩니다.

 

3. parameter가 더 많은 경우

const argument1 = 'say';

foo(argument1); // 한 개의 argument 전달

// 함수에서 두 개의 값을 받아야 함
function foo(parameter1, parameter2) {
  console.log(parameter1); // Output = 'say'
  console.log(parameter2); // Output = undefined
}

언어에 따라 argument가 부족하다는 에러 메시지를 출력할 수 있습니다.

자바스크립트의 경우, 부족한 parameter는 undefined가 할당됩니다.

 

default argument를 지원하는 언어의 경우, 값을 제공받지 못한 parameter는 default argument로 대체됩니다.

자바스크립트의 경우, default argument를 지원합니다.

const argument1 = 'say';

foo(argument1); // 한 개의 argument 전달

// 함수에서 두 개의 값을 받아야 하나, 없는 경우 기본값으로 대체
function foo(parameter1 = 'yo', parameter2 = 'hi') {
  console.log(parameter1); // Output = 'say'
  console.log(parameter2); // Output = 'hi'
}

 

마치며

parameters는 함수를 정의할 때 입력값을 받을 수 있는 변수이고, arguments는 함수에 입력으로 전달되는 실제 값들을 말합니다. parameter두 용어가 서로 혼용될 때도 있지만 기본적으로 어떠한 의미 차이를 가지고 있는지 알아두면 도움이 될 것 같습니다.

 

지적이나 다른 의견은 언제나 환영합니다 :D

감사합니다.

 

References

https://developer.mozilla.org/en-US/docs/Glossary/Argument

https://developer.mozilla.org/en-US/docs/Glossary/Parameter

https://en.wikipedia.org/wiki/Parameter_(computer_programming)

'Programming' 카테고리의 다른 글

VSCODE 언어별 설정 바꾸기  (0) 2024.04.16
Jorma Sajaniemi의 '변수 역할' 프레임워크  (2) 2023.10.30