🌈 매개변수(parameter)와 전달인자(argument)란?
function testFun(a,b) {
return a + b
}
testFun(2,3);
위 코드에서 함수를 선언할 때 (a,b)의 a,b가 매개변수(parameter)이며 매개변수는 말 그대로 변수이다.
또한, 함수를 호출할 때의 (2,3)이 변수에 들어가는 값이며 인수(arguments) 라고 한다.
자바스크립트에서 arguments는 함수에 전달된 인수에 해당하는 객체이며 유사 배열에 해당한다.
정리하자면, 위 이미지에서 x와 y는 매개변수(Parameter, 인자)에 해당하며 함수의 정의에서 사용되는 변수이다. 그리고 add(2, 5)에서 2와 5를 전달인자(argument, 인수) 라고 부르며 파라미터에 할당되는 값을 말한다.
📘 인수(argument)
1️⃣ 인수(arguments)의 특징
자바스크립트에서는 함수를 호출할 때 arguments 객체가 함수 내부로 전달된다.
arguments 객체는 함수를 호출할 때 넘긴 인자들이 배열 형태로 저장된 객체를 말한다.
function testFun(arg1, arg2) {
console.log(arg1, arg2);
};
testFun(); // undefined undefined ------(1)
testFun(1); // 1 undefined -------------(1)
testFun(1, 2); // 1 2
testFun(1, 2, 3); // 1 2 -------------(2)
위의 코드에서 유추할 수 있는 arguments의 특징은 아래와 같다.
(1) 함수의 매개변수보다 적게 인수를 전달할 경우와 전달되지 않은 인자에는 undefined 값이 할당된다.
(2) 매개변수보다 많게 인수를 전달 할 경우 초과된 인수는 무시되지만 arguments라는 객체에 할당된다.
(+) arguments는 지역변수이며, arguments 객체를 통하여 초과로 전달된 인수를 참조할 수 있다.
- 매개변수 개수가 정확하게 정해지지 않은 함수를 구현하거나 전달된 인자의 개수에 따라 서로 다른 처리를 해줘야 하는 함수를 생성할 때 유용하다.
2️⃣ 인수(arguments)의 구조
arguments는 세 개의 부분으로 구성되어 있으며 아래와 같은 특징 때문에 유사 배열이라고 불린다.
◾ 함수를 호출할 때 넘겨진 인수 (index 배열 형태)
→ arguments[index]를 통해 함수에 들어온 인자의 특정 자릿수의 값을 알 수 있다
◾ length 프로퍼티
→ arguments.length를 통해 이 객체 안에 몇 개의 인수를 가졌는지 알 수 있다
→ 배열과 유사하게 동작하지만 유사 배열 객체이므로 배열 메서드를 사용할 수는 없다.
◾ callee 프로퍼티
→ 실행 중인 함수의 참조값
📌 참고사이트
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Functions/arguments
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Functions/Default_parameters
'Frontend > JavaScript' 카테고리의 다른 글
[JS ] 모듈 패턴 (Module Pattern) (0) | 2021.09.13 |
---|---|
[JS] 자바스크립트 Web Storage (0) | 2021.09.12 |
[JS] 함수를 호출하는 메서드 Call, apply, bind (0) | 2021.09.09 |
[JS] 즉시 실행 함수(IIFE) 사용 방법 (0) | 2021.09.08 |
[JS] 오브젝트(Object) Key, Value에 접근하기 (0) | 2021.09.06 |
최근댓글