[JS]arguments 객체

2025. 1. 10. 10:51·Language/JavaScript

arguments 객체

arguments 객체는 함수 내부에서 사용할 수 있는 특별한 객체로, 함수에 전달된 모든 인자를 배열 형태로 접근할 수 있게 해준다. 이 객체는 함수가 호출될 때 자동으로 생성되며, 함수의 매개변수와는 별개로 존재한다. 즉, 함수의 매개변수 개수와 상관없이 인자를 전달할 수 있다.

arguments 객체의 특징

유사 배열 객체: arguments 객체는 배열처럼 인덱스를 통해 접근할 수 있지만, 실제 배열은 아니다. 따라서 배열 메서드를 직접 사용할 수 없다.
인자의 개수: arguments.length 속성을 통해 함수에 전달된 인자의 개수를 확인할 수 있다.
ES6 이후의 변화: ES6에서는 스프레드 연산자(...)와 나머지 매개변수(rest parameters)를 도입하여 arguments 객체의 사용을 줄일 수 있게 되었다.

arguments 객체의 예시 코드

function sum() {
    let total = 0;
    //arguments 객체를 사용하여 전달된 인자의 수만큼 반복
    for (let i = 0; i < arguments.length; i++) {
        // 각 인자를 total에 더함
        total += arguments[i];
    }
    //최종 합계를 반환
    return total;
}

// sum 함수 호출 예시
console.log(sum(1, 2, 3, 4)); //10
console.log(sum(5, 10, 15));  //30

위의 예시에서 sum 함수는 전달된 모든 인자를 더하여 결과를 반환한다. arguments 객체를 사용하여 인자의 개수에 상관없이 동적으로 처리할 수 있다.

나머지 매개변수

//가변 인자를 받아서 합계를 계산
function sum(...numbers) {
    //numbers 배열의 모든 요소를 합산하여 반환
    return numbers.reduce((total, num) => total + num, 0);
}

//sum 함수 호출 예시
console.log(sum(1, 2, 3, 4)); //10
console.log(sum(5, 10, 15));  //30

ES6에서는 arguments 객체 대신 나머지 매개변수를 사용할 수 있다. 나머지 매개변수는 함수의 매개변수 목록에서 마지막에 ...을 붙여 사용한다. 위의 예시에서 ...numbers는 함수에 전달된 모든 인자를 배열로 받아온다. 이 방법은 코드의 가독성을 높이고, 배열 메서드(reduce)를 직접 사용할 수 있게 해준다.

결론

arguments 객체는 자바스크립트에서 함수에 전달된 인자를 다룰 수 있는 유용한 도구이다. 하지만, ES6 이후로는 나머지 매개변수를 사용하는 것이 더 효율적이여서 권장된다.

'Language > JavaScript' 카테고리의 다른 글

[JS]this  (0) 2025.01.14
[JS]apply, call 메서드  (0) 2025.01.13
[JS]let, const, var  (0) 2024.12.30
[JS]템플릿 리터럴(Template Literal)  (1) 2024.12.24
[JS]객체(Object) 정의, 호출  (0) 2024.12.24
'Language/JavaScript' 카테고리의 다른 글
  • [JS]this
  • [JS]apply, call 메서드
  • [JS]let, const, var
  • [JS]템플릿 리터럴(Template Literal)
yxxjxxeee
yxxjxxeee
  • yxxjxxeee
    공부 일지
    yxxjxxeee
  • 전체
    오늘
    어제
    • study
      • Framework
        • Spring
      • Language
        • JavaScript
        • C | C++
        • JAVA
        • PHP
      • CS
        • 네트워크
        • 자료구조
        • 데이터베이스
        • 운영체제
      • DBMS
        • MySQL
      • 코딩테스트
        • 백준
        • 프로그래머스
        • LeetCode
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 쇼핑몰 제작 프로젝트(PHP)
    • github
  • 공지사항

  • 인기 글

  • 최근 글

  • hELLO Designed By 정상우
    Version v4.10.2
yxxjxxeee
[JS]arguments 객체
상단으로

티스토리툴바