반응형
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 등의 메서드를 사용할 수 있어 더 유용하다.
반응형
'BACKEND [Kamranahmedse Roadmap] > JavaScript' 카테고리의 다른 글
[JS] 함수 호출 스택(Call Stack) 완벽 정리 (0) | 2025.02.15 |
---|---|
[JS] undefined vs null 차이점 완벽 정리 (0) | 2025.02.15 |
[JS] TDZ(Temporal Dead Zone, 일시적 사각지대)란? (0) | 2025.02.15 |
[JS] 호이스팅(Hoisting)이란? (0) | 2025.02.15 |
[JS] 함수 선언문 vs 함수 표현식 (0) | 2025.02.14 |