자바스크립트 변수의 오버로딩 처리 방법

자바스크립트는 동적 타이핑 언어로서, 변수의 타입을 선언 시점에서 결정하지 않고, 실행 중에 동적으로 결정합니다. 따라서, 동일한 변수명으로 여러 타입의 값을 저장할 수 있습니다. 이를 이용하여, 오버로딩(Overloading)을 구현할 수 있습니다.

오버로딩은 같은 이름을 가진 메소드나 함수가 파라미터의 타입이나 개수에 따라 다른 동작을 하도록 하는 것을 의미합니다. 하지만, 자바스크립트는 기본적으로 메소드 오버로딩을 지원하지 않습니다. 그러나, 몇 가지 방법을 사용하여 오버로딩과 유사한 동작을 구현할 수 있습니다.

1. 파라미터의 타입을 체크하여 다른 동작 구현하기

아래 예제는 calculate 함수를 호출하는데, 파라미터의 타입에 따라 다른 동작을 구현한 예제입니다.

function calculate(a, b) {
  if (typeof a === "number" && typeof b === "number") {
    return a + b; // 두 개의 숫자를 더함
  } else if (typeof a === "string" && typeof b === "string") {
    return a.concat(b); // 두 개의 문자열을 이어붙임
  } else {
    return "Invalid input";
  }
}

console.log(calculate(3, 5)); // 출력: 8
console.log(calculate("Hello", " world")); // 출력: "Hello world"
console.log(calculate(3, "Hello")); // 출력: "Invalid input"

위 예제에서는 calculate 함수를 호출할 때, 숫자형 파라미터를 전달하면 두 개의 숫자를 더하고, 문자열 파라미터를 전달하면 두 개의 문자열을 이어붙입니다. 만약 타입이 다른 파라미터를 전달하면 “Invalid input”을 반환합니다.

2. 함수 이름에 서로 다른 접두사를 붙여 구분하기

이 방법은 오버로딩과 유사한 동작을 구현할 수 있는 방법 중 하나입니다. 예를 들어, 파라미터의 개수에 따라 다른 함수를 호출하는 방법입니다.

function addTwoNumbers(a, b) {
  return a + b;
}

function addThreeNumbers(a, b, c) {
  return a + b + c;
}

console.log(addTwoNumbers(3, 5)); // 출력: 8
console.log(addThreeNumbers(3, 5, 7)); // 출력: 15

위 예제에서는 addTwoNumbers 함수는 2개의 숫자를 더하고, addThreeNumbers 함수는 3개의 숫자를 더합니다. 파라미터의 개수에 따라 함수를 구분하여 호출하는 방법이므로, 오버로딩과 유사한 결과를 얻을 수 있습니다.

이처럼 자바스크립트에서는 오버로딩을 지원하지 않지만, 다른 방법을 사용하여 유사한 동작을 구현할 수 있습니다. 적절한 방법을 선택하여 프로그램의 요구에 맞게 활용해보세요!