Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript의 arguments 객체란 무엇일까요? 개념부터 활용 예제까지

arguments 객체는 JavaScript에서 현재 실행 중인 함수에 전달된 인수들을 나타내는 유사 배열(array-like) 객체입니다. 함수를 호출할 때 정의된 매개변수 개수와 상관없이, 실제로 넘겨준 모든 값을 이 객체를 통해 확인하고 다룰 수 있습니다.

문법(Syntax)

[function.]arguments[p]

함수 내부에서는 별도 선언 없이 arguments로 바로 접근할 수 있으며, 인덱스를 사용해 각 인수에 접근합니다(예: arguments[0], arguments[1]).

예제

아래 코드를 실행하면 arguments 객체가 어떻게 동작하는지 직접 확인할 수 있습니다.

<html>
   <body>
      <script>
         function functionArgument(val1, val2, val3) {
            var res = "";
            res += "Expected Arguments: " + functionArgument.length;
            res += "<br />";
            res += "Current Arguments : " + arguments.length;

            res += "<br />";
            res += "Each argument = "

            for (p = 0; p < arguments.length; p++) {
               res += "<br />";
               res += functionArgument.arguments[p];
               res += " ";
            }
            document.write(res);
         }
         functionArgument(20, 50, 80, "Demo Text!", "Hello World", new Date())
      </script>
   </body>
</html>

실행 결과 해설

위 예제에서 함수는 세 개의 매개변수(val1, val2, val3)를 정의하고 있지만, 호출 시에는 여섯 개의 인수를 전달했습니다. 결과는 다음과 같이 출력됩니다.

  • Expected Arguments: 3functionArgument.length는 함수가 정의상 기대하는 매개변수의 개수를 반환합니다.
  • Current Arguments: 6arguments.length는 호출 시 실제로 전달된 인수의 개수를 반환합니다.
  • Each argument — 반복문을 통해 전달된 모든 값(숫자, 문자열, Date 객체 등)을 순서대로 출력합니다.

이처럼 arguments 객체를 활용하면 매개변수 개수에 제한받지 않고 유연하게 함수를 작성할 수 있습니다.

알아두면 좋은 점

  • arguments 객체는 배열과 비슷하지만 실제 배열이 아니므로 map(), filter() 같은 배열 메서드를 직접 사용할 수 없습니다. 필요하다면 Array.from(arguments) 또는 스프레드 연산자([...arguments])로 변환하세요.
  • 화살표 함수(arrow function)에는 자체적인 arguments 객체가 없으므로, 일반 함수 표현식이나 함수 선언문에서만 사용할 수 있습니다.
  • 모던 JavaScript에서는 가변 인수 처리 시 나머지 매개변수(rest parameter)(function fn(...args))를 사용하는 것이 권장됩니다.