카테고리 없음

인자를 배열로...arguments

개발자doc 2024. 5. 20. 17:05
목차
1. arguments란?
2. 사용하는 이유
1. arguments란?
    • 함수에 전달된 인자를 배열 형태로 갖는 객체

 

 

arguments 객체는 배열 형태이긴 하지만 Array클래스의 배열 객체가 아닌 유사 배열 객체 중 하나다. 따라서 인덱스롤 접근은 할 수 있지만 배열의 메서드는 사용할 수 없다. 또한 function 키워드를 통해 함수에서는 사용할 수 있지만 화살표함수에서는 this와 마찬가지로 자체적인 arguments를 바인딩하지 않기 때문에 사용할 수 없다.

const fn = (a, b, c) => {
    console.log(arguments[0])
    console.log(arguments[1])
    console.log(arguments[2])
    console.log(arguments[3])
}

fn(1, 2, 3, 4)

/*
    결과
    ReferenceError: Can't find variable: arguments
*/
2. 사용하는 이유

매개변수를 통해 인자값을 받을텐데 사용하는 이유가 뭘까? 

js는 동적 언어로 함수를 호출할 때 인자값의 갯수가 매개변수보다 많으면 개수에 따라 인자값이 전달된다. 하지만 arguments객체를 사용하게 되면 추가적인 인자값에 대해 유연하게 대처할 수 있다. 

function fn(a,b,c){
	console.log(arguments[0]);
    console.log(arguments[1]);
    console.log(arguments[2]);
    console.log(arguments[3]);//추가적인 인자값을 출력
}
fn(1,2,3,4);

/*
	결과
    1
    2
    3
    4
*/