일반적으로 함수는 정의된 매개변수의 개수에 맞춰 호출되어야 하지만, 가변 인자를 사용하면 동적으로 개수가 달라지는 여러 개의 인자를 함수에서 처리할 수 있습니다. 즉, 함수는 호출될 때 전달된 인자의 개수와 관계없이 이를 모두 받아서 처리할 수 있습니다. 이를 통해 함수 호출 시 인자의 개수를 고정하지 않고, 유연하게 처리할 수 있습니다.
1. arguments
객체
arguments
객체는 함수 내에서 자동으로 생성되는 배열과 유사한 객체로, 함수에 전달된 모든 인자를 포함합니다. 이 객체는 모든 함수에서 자동으로 사용 가능하며, 함수의 매개변수를 지정하지 않아도 전달된 모든 인자에 접근할 수 있습니다.
arguments
객체는 배열이 아니지만, length
속성을 가지고 있어 인자의 개수를 확인할 수 있습니다.Array.from(arguments)
등을 통해 배열로 변환할 수 있습니다.2. REST 파라미터 (...
)
REST 파라미터는 ES6에서 도입된 문법으로, 함수 정의 시 마지막 매개변수 앞에 ...
을 붙여 사용합니다. REST 파라미터는 함수에 전달된 인자 중 나머지 모든 인자를 배열로 수집하여 사용할 수 있게 합니다.
3. 가변 인자의 장점
가변 인자는 다양한 상황에서 유용하게 사용될 수 있으며, 특히 다음과 같은 장점이 있습니다.
...
)를 사용하면 코드를 더 읽기 쉽고 간결하게 만들 수 있습니다.4. 가변 인자의 사용 시 주의점
function example(a, ...rest, b)
와 같은 형태는 허용되지 않습니다.예제코드
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
// 가변 인자 예제 - 인자의 개수에 상관없이 함수를 호출할 수 있음
// func1 함수: arguments 객체를 사용하여 가변 인자 처리
const func1 = function () {
// arguments.length로 전달된 인자의 개수 출력
console.log(arguments.length);
// 전달된 모든 인자를 순회하며 출력
for (let data of arguments) {
console.log(data); // 각 인자 값 출력
}
};
// func1 함수 호출
func1(1); // 예상 출력: 1, 1
func1(1, 2); // 예상 출력: 2, 1, 2
func1(1, 2, 3); // 예상 출력: 3, 1, 2, 3
// func2 함수: REST 파라미터(...datas)를 사용하여 가변 인자 처리
const func2 = function (...datas) {
// datas.length로 전달된 인자의 개수 출력
console.log(datas.length);
// 전달된 모든 인자를 순회하며 출력
for (let data of datas) {
console.log(data); // 각 인자 값 출력
}
};
// func2 함수 호출
func2(1); // 예상 출력: 1, 1
func2(1, 2); // 예상 출력: 2, 1, 2
func2(1, 2, 3); // 예상 출력: 3, 1, 2, 3
</script>
</body>
</html>