BACKEND [Kamranahmedse Roadmap]/JavaScript

[JS] arguments 객체란 무엇인가? + rest parameter

Alex Han 2025. 2. 15. 16:41
반응형

arguments 객체는 함수 내에서 사용 가능한 배열과 유사한(유사 배열) 객체로, 함수가 호출될 때 전달된 모든 인수(매개변수 포함)를 포함합니다.

 

단, arguments 객체는 화살표 함수(arrow function)에서는 사용할 수 없습니다.

 

 

 


📌 특징

 

1. 배열이 아니라 유사 배열 객체(Array-like Object)

length 속성을 가지지만, 배열의 메서드(map, forEach, reduce 등)를 직접 사용할 수 없음.

필요하면 Array.from(arguments) 또는 [...] 스프레드 문법을 사용해 배열로 변환.

2. 함수의 모든 인자를 포함

함수에 정의된 매개변수보다 더 많은 인자를 전달해도 arguments 객체에 모두 저장됨.

3. 인덱스를 통해 개별 인자 접근 가능

arguments[0], arguments[1] 등으로 접근 가능.

4. 화살표 함수에서는 arguments가 없음

대신 rest parameter (...args)를 사용해야 함.

 

 

 


🔹 사용 예제

 

1. 일반 함수에서의 arguments 객체 사용

function example() {
    console.log(arguments);        // [Arguments] { '0': 'Hello', '1': 'World', '2': 123 }
    console.log(arguments.length); // 3 (인자 개수)
    console.log(arguments[0]);     // "Hello"
    console.log(arguments[1]);     // "World"
}

example("Hello", "World", 123);

 


2. arguments를 배열로 변환하는 방법

function convertToArray() {
    const argsArray = Array.from(arguments);  // 방법 1
    console.log(argsArray);
    
    const spreadArray = [...arguments];       // 방법 2 (ES6)
    console.log(spreadArray);
}

convertToArray(10, 20, 30, 40);  // [10, 20, 30, 40]

 


3. arguments와 rest parameter (...args) 차이

arguments는 모든 인자를 포함하지만, rest parameter는 명시적으로 설정된 인자 이후의 것만 포함합니다.

화살표 함수에서는 arguments가 없고 ...args만 사용할 수 있습니다.

function withArguments(a, b) {
    console.log(arguments); // 모든 인자 포함
}

function withRest(a, b, ...args) {
    console.log(args); // a, b를 제외한 나머지 인자 포함
}

withArguments(1, 2, 3, 4); // [Arguments] { '0': 1, '1': 2, '2': 3, '3': 4 }
withRest(1, 2, 3, 4);      // [ 3, 4 ]

 


4. 화살표 함수에서 arguments 대신 ...args 사용

const arrowFunction = (...args) => {
    console.log(args);
};

arrowFunction(5, 6, 7); // [5, 6, 7]

 

⚠️ 화살표 함수에서는 arguments를 사용할 수 없음

const arrowFunction = () => {
    console.log(arguments); // ❌ ReferenceError: arguments is not defined
};

arrowFunction(1, 2, 3);

 

 

 


📌 arguments vs rest parameter (...args) 정리

특징 arguments ...args (rest parameter)
지원 함수 타입 일반 함수 (function) 일반 함수 & 화살표 함수
타입 유사 배열 객체 진짜 배열
메서드 사용 가능 여부 Array 메서드 사용 불가능 Array 메서드 사용 가능
포함 인자 모든 전달된 인자 포함 명시된 매개변수 이후의 인자만 포함
화살표 함수에서 사용 가능 여부 ❌ 불가능 ✅ 가능

 

 

 


🚀 결론

arguments는 일반 함수에서 모든 전달된 인자를 포함하는 유사 배열 객체다.

arguments화살표 함수에서 사용할 수 없다.

ES6 이후에는 ...args(rest parameter)를 더 많이 사용하며, 이는 배열이므로 map, forEach 등의 메서드를 사용할 수 있어 더 유용하다.

반응형