함수 인자 처리 (Handling Function Arguments)

함수 인자 처리 (Handling Function Arguments)

자바스크립트(JavaScript)에서 함수 인자 처리(Handling Function Arguments)는 함수가 입력값을 어떻게 받아 처리하는지를 정의한다. 다양한 인자 패턴을 통해 유연성과 가독성을 높일 수 있다. 함수 인자 처리(Handling Function Arguments)의 정의, 동작 방식, 일반 함수와의 차이점, 그리고 사용 사례를 예제로 확인한다.


함수 인자 처리(Handling Function Arguments)는 기본값(Default Parameters), 나머지 매개변수(Rest Parameters), 스프레드 연산자(Spread Operator) 등을 활용한다. ES6에서 도입된 기능들이 포함된다.


함수 인자 처리(Handling Function Arguments)란 무엇인가?

함수 인자 처리(Handling Function Arguments)는 함수가 전달받은 인자를 관리하는 방식을 의미한다. 기본적인 예제를 살펴보자:

function greet(name = "Guest") {
    return `안녕, ${name}`;
}
console.log(greet()); // 안녕, Guest
console.log(greet("철수")); // 안녕, 철수

name에 기본값(Default Parameter)이 설정되어 인자가 없어도 동작한다. 나머지 매개변수(Rest Parameters)도 있다:

function sum(...numbers) {
    return numbers.reduce((acc, curr) => acc + curr, 0);
}
console.log(sum(1, 2, 3)); // 6

함수 인자 처리(Handling Function Arguments)의 동작 방식

함수 인자 처리(Handling Function Arguments)는 인자의 개수와 유형에 따라 동작을 조정한다. ES6 이전에는 arguments 객체를 사용했으나, 이제는 더 간결한 방법이 있다.


예제를 통해 동작 방식을 확인한다:

function combine(first, ...rest) {
    return [first, ...rest];
}
console.log(combine(1, 2, 3, 4)); // [1, 2, 3, 4]

rest는 첫 번째 인자를 제외한 나머지를 배열로 수집한다.


함수 인자 처리(Handling Function Arguments)와 일반 함수의 차이점

1. 인자 관리

- 일반 함수: arguments 객체 사용.

function oldSum() {
    return Array.from(arguments).reduce((a, b) => a + b);
}
console.log(oldSum(1, 2, 3)); // 6

- 인자 처리: rest로 대체.

function newSum(...args) {
    return args.reduce((a, b) => a + b);
}
console.log(newSum(1, 2, 3)); // 6

2. 기본값

- 일반 함수: 수동 설정 필요.

- 인자 처리: 기본값 제공.


사용 사례

함수 인자 처리(Handling Function Arguments)의 활용 사례를 예제로 확인한다.


1. 기본값 설정

function log(message = "없음") {
    console.log(message);
}
log(); // 없음

2. 가변 인자

function join(separator, ...words) {
    return words.join(separator);
}
console.log(join("-", "a", "b", "c")); // a-b-c

3. 스프레드 사용

function apply(fn, ...args) {
    return fn(...args);
}
console.log(apply(Math.max, 1, 5, 3)); // 5

4. 객체 인자

function config({ name = "익명", age = 0 } = {}) {
    return `${name}, ${age}`;
}
console.log(config({ name: "철수" })); // 철수, 0

5. 혼합 인자

function mix(first, second, ...rest) {
    return [first, second, rest];
}
console.log(mix(1, 2, 3, 4)); // [1, 2, [3, 4]]

6. 배열 확장

const arr = [1, 2];
function extend(...items) {
    return [...arr, ...items];
}
console.log(extend(3, 4)); // [1, 2, 3, 4]

7. 필터링

function filterArgs(...args) {
    return args.filter(x => x > 0);
}
console.log(filterArgs(-1, 2, 0, 3)); // [2, 3]

8. 동적 호출

function dynamic(fn, ...args) {
    return fn(...args);
}
console.log(dynamic((a, b) => a * b, 2, 3)); // 6

성능과 한계

장점

- 유연성: 다양한 인자 패턴을 지원한다.

- 간결함: arguments보다 명확하다.


한계

- 화살표 함수: rest는 가능하나 arguments는 없다.

- 오버헤드: 큰 배열 처리 시 성능 저하 가능성 있다.

인자의 개수가 많을 경우 성능을 고려해 설계한다.


마무리

함수 인자 처리(Handling Function Arguments)는 자바스크립트(JavaScript)에서 함수의 입력을 관리하는 유용한 방법이다. 사용 사례를 통해 그 활용 방식을 살펴봤다.


+ Recent posts