본문 바로가기

javascript

[javascript] overloading

자바스트립트에서 함수 오버로딩 기능을 직접 제공하지 않지만 오버로딩을 가능하게 하는 방법이 있다.


일단 함수 오버로딩을 하려면 두가지 정보가 필요하다.


전달인자의 개수와 전달인자 타입을 알아야 한다.


우선 전달 인자의 개수로 오버로딩 하는 방법을 알아보자


arguments 변수를 활용하여 오버로딩을 할 수 있다.


arguments는 자바스트립트의 모든 함수 내부에 함수로 전달되는 모든 전달인자를 담은 배열같이 작동하는 변수다.


function message(){

for(var i=0; i<arguments.length; i++){

alert(arguments[i]);

}

}

message('hello', 'world', '!!');


위와 같이 간단한 함수를 만들고 인자값을 전달하면 전달된 인자값이 출력되는걸 확인할 수 있다.



이제 어떻게 오버로딩 할지 감이 잡힐 겁니다.


간단한 예로 설명하겠습니다.


function sendMessage(msg1, msg2){

//메시지 2개를 모두 받으면

if(arguments.length==2){

alert('메시지 2개 :'+msg1+', '+msg2);

}else{ //1개만 받으면

alert('메시지 1개 :'+msg1);

}

}


sendMessage('hello');

sendMessage('hello','world');


이렇게 arguments를 활용하여 전달인자 개수에 따라 구분해 줍니다.


다음으로 전달인자가 없을때 기본메시지를 출력하는 방법을 알아보겠습니다.


이때는 전달인자가 전달되지 않았을때 undefined라는 값을 이용합니다.


function message(msg){

//msg가 정의 되었는지 검사한다.

if(typeof msg=='undefined'){

//msg가 정의 되지 않았다면 기본메시지를 사용

msg='메시지를 입력하세요';

}

alert(msg);

}


위와 같이 전달인자가 없을때 undefined를 활용하면 된다.