아래와 같이 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)