[javascript] 함수 오버로드 만들기

아래와 같이 javascript 환경에서 overload라는 이름의 함수의 파라메터가 1개거나 2개인 상황을 모두 처리할 수 있게, 하려고 java나 c#처럼 코드를 짜서 실행해보았다.

function overload(a) {
	console.log(a)
}
function overload(a,b) {
	console.log(a,b)
}
overload(1)
overload(1,2)

그냥 맨아래 것을 기준으로 실행이 되버린다.

기본적으로 자바스크립트는 오버로드 기능이 없다.
그대신 만들어서 쓰는 방법이 있었다.
그냥 분기처리 해버리면 된다! ㅋㅋㅋ

function overload(a,b) {
  if(b)	console.log(a,b)
  else {
    console.log(a)
  }
}
overload(1)
overload(1,2)

파라메터에 콜백이 있을 때는, typeof로 function인지 확인만 해주면 된다.

function callback() {
 console.log("callback!")
}
function overload(a,b) {
  if(b)	console.log(a,b)
  else if (typeof a === 'function') {
  	a()
  }
  else {
    console.log(a)
  }
}
overload(1)
overload(1,2)
overload(callback)

콜백함수 연습중, printLamen 함수를 오버로딩한 예제이다.

const chain1 = (lamen) => {
  printLamen('너구리라면', chain2)
}
const chain2 = (lamen) => {
  printLamen('진라면', chain3)
}
const chain3 = (lamen) => {
  printLamen('신라면', chain4)
}
const chain4 = (lamen) => {
  printLamen('삼양라면')
}

const printLamen = (lamen, cb) => {
  console.log(lamen)
  if(typeof cb === 'function') setTimeout(cb, timeout)
}

chain1(firstlamen)

좋은 웹페이지 즐겨찾기