arguments 객체 동작

Onew·2025년 10월 5일
0

js

목록 보기
18/24

코드

const argumentsTest = function(){
  console.log(arguments);  //에러?
}
argumentsTest();           // Arguments(0)
argumentsTest('a','b','c'); // Arguments(3)

1. arguments 객체란?

  • 함수 안에서 자동으로 생성되는 유사 배열 객체(array-like object).
  • 호출 시 전달된 모든 인자들을 담고 있음.
  • 배열처럼 인덱스로 접근 가능 (arguments[0], arguments[1] …)
  • 하지만 배열 메서드(map, forEach 등)는 직접 쓸 수 없음.

2. 실행 과정

(1) argumentsTest();

  • 인자 없음 → arguments는 비어있는 객체처럼 출력됨.

  • 콘솔 출력:

    Arguments(0) []

(2) argumentsTest('a','b','c');

  • 인자 3개 전달 → arguments에 모두 저장됨.

  • 콘솔 출력:

    Arguments(3) ['a', 'b', 'c', callee: ƒ, Symbol(Symbol.iterator): ƒ]

    (브라우저/Node.js 환경에 따라 출력 모양이 조금 다름)


3. "에러" 부분에 대한 설명

  • 일반 함수 표현식(function(){}) 안에서는 arguments 사용 가능 → 에러 아님.

  • 화살표 함수(() => {}) 안에서는 arguments가 없음 → 이 경우 진짜 에러 발생.

    const test = () => {
      console.log(arguments); // ReferenceError
    }

4. 최종 결과 (일반 함수 표현식 기준)

Arguments(0) []
Arguments(3) ['a', 'b', 'c']

👉 정리:

  • arguments는 모든 인자를 담은 유사 배열 객체.
  • 함수 표현식/선언식에서만 동작하고, 화살표 함수에서는 안 됨.

0개의 댓글