웹개발 및 최신 테크 소식을 전하는 블로그, 웹이즈프리

HOME > js

함수 오버로딩(Overloading)란 무엇이고 자바스크립트에서 차이점

Last Modified : 2019-08-22 / Created : 2017-06-07
4,463
View Count

웹개발에서 함수를 사용할때 배우게 되는 함수 오버로딩(Overloading)에 대하여 알아봅니다. 이 것은 무엇이고 자바 그리고 자바스크립트에서의 차이점은 무엇일까요?




# 함수 오버로딩(Function overloading)

먼저 함수 오버로딩에 대하여 알아보겠습니다. 함수 오버로딩(overloading)은 사전적의미로 본다면  over loading~ 뭔가가 전달되어 읽혀진다로 생각할 수 있습니다. 즉, 함수에 전달되는 것은 인자(arguments)이므로 전달된 인자가 어떻게 읽혀지느냐와 관련이 있습니다. 그 어떻게는 아래에 설명하겠습니다.

함수(메소드) 이름은 동일하나 인자(매개변수)의 타입 및 개수가 다름


위와 같이 이름은 동일하나 전달할 인자의 타입이나 개수가 다름을 의미합니다. 자바를 예를들면 아래와 같이 선언하는 것을 의미합니다. 만약 두 배의 값을 반환하는 함수 doubleNum()을 만든다면 ~
void doubleNum(int num) {
  printLn(num * 2);
}
 
위 함수 doubleNum()은 int 타입의 인자를 하나 받아 * 2를 곱한 후 반환합니다. 하지만 아래와 같이 동일한 이름을 가진 함수를 다시 선언하되 인자의 타입 및 개수를 바꾸면 어떻게 될까요?
void doubleNum(int num1, int num2) {
  printLn((num1 + num2) * 2);
}
//  두 개의 값을 더한 후 2를 곱해 반환함

void doubleNum(string num) {
  printLn('현재 값은' + num + '입니다.');
}
// 문자타입인 경우 그 값을 출력함

보시는 것처럼 같은 이름 세 개의 함수가 선언되었지만 모두 다른 동작을 하도록 만들 수 있습니다. 이 것이 오버로딩(Overloading)이라고 생각하시면 됩니다. 즉, 오버로딩을 사용하지 않아도 동일하게 구현할 수 있겠지만 오버로딩을 사용하면 아래와 같은 장점이 있습니다.

- 비슷한 기능을 수행하는 여러 함수를 만들 필요없음

위와 같은 장점은 코드가 복잡해지고 길어질수록 그 장점은 더 커지겠지요. 동일한 함수가 여러 번 반복 사용되야하는 경우 오버로딩은 반드시 필요합니다.


! 자바스크립트의 함수 오버로딩(overloading)

자바스크립트에서는 오버로딩이 존재하지 않지만 동작은 같게 만들 수 있습니다. 먼저 자바스크립트에서는 동일한 함수의 이름을 반복 선언할 수 없습니다. 인자의 개수를 다르게 하여도 먼저 선언된 함수가 뒤의 함수로 재선언되기 때문입니다. 즉 다음의 함수는 아래의 동작만 기능을 수행하게 됩니다.
function doubleNum(num) {
  console.log(1)
}

function doubleNum(num) {
  console.log(2);
}

// 실행하면 2만 출력됨

또한 자바스크립트는 타입 선언이 따로 지정하지 않기 때문에 타입에 따른 함수 선언도 다르게 존재할 수 없겠죠.


아래의 글도 찾고 계시지 않나요?

Previous

자바스크립트 배열의 중간값을 삭제하는 방법

Previous

ES 6 화살표 함수(Arrow function) 정보 및 예제보기