(JS) arguments 객체

호두파파·2021년 1월 24일
0

(JS) 함수

목록 보기
4/10

arguments 객체는 함수에 전달된 인수에 해당되는 Array형태의 객체입니다.

Array 형태란, arguments가 length 속성과 더불어 0부터 인덱스된 다른 속성을 가지고 있지만, Array의 forEach, map과 같은 내장 메서드를 가지고 있지 않다는 뜻이다.

arguments객체는 함수를 호출할 때 넘긴 인자들이 배열 형태로 저장된 객체를 의미한다. 이 객체는 실제 배열이 아닌 유사배열 객체이다.

function func1(a, b, c) {
  console.log(arguments[0]);
  // expected output: 1

  console.log(arguments[1]);
  // expected output: 2

  console.log(arguments[2]);
  // expected output: 3
}

func1(1, 2, 3);
//1
//2
//3

arguments 객체는 모든 함수 내에서 이용 가능한 지역 변수입니다. arguments 객체를 사용하여 함수 내에서 모든 인수를 참조할 수 있으며, 호출할 때 제공한 인수 각각에 대한 항목을 갖고 있습니다. 항목의 인덱스는 0부터 시작합니다.

예를 들어, 함수가 세 개의 인수를 받은 경우 다음과 같이 접근할 수 있습니다.

arguments[0]
arguments[1]
arguments[2]
arguments[1] = 'new value'; // 각 인수를 설정하거나 재할당할 수도 있습니다.

arguments 객체는 Array가 아닙니다. Array와 비슷하지만, length 빼고는 pop()과 같은 어떤 Array 속성도 없습니다. 그러나 실제 Array로 변환할 수 있습니다:

let args = Array.prototype.slice.call(arguments);
let args = [].slice.call(arguments);

arguments를 실제 Array로 변환하기 위해 ES2015의 Array.from() 메서드 또는 스프레드 연산자를 사용할 수도 있습니다.

var args = Array.from(arguments); // Array.from()
var args = [...arguments]; // 스프레드 연산자

arguments객체는 매개변수가 개수가 정확하게 정해지지 않은 함수를 구현하거나 전달된 인자의 개수에 따라 서로 다른 처리를 해줘야 하는 함수를 개발하는데 유용하게 사용할 수 있다.

function sum() {
  let result = 0;
  
  for (let i = 0; i < arguments.length; i++) {
    result += arguments[i]
  }
  return result;
}

sum(1, 2, 3); //6
profile
안녕하세요 주니어 프론트엔드 개발자 양윤성입니다.

0개의 댓글