javaScript
js에서 메서드 오버로딩 구현하기 - arguments
mooyou
2024. 1. 21. 12:21
728x90
300x250
메서드 오버라이딩은 동일한 이름을 가진 여러개의 메서드가 매개변수 타입과 개수에 따라 동작하는 것을 의미한다.
function add(x, y) {
return x + y;
}
function add(x, y, z) {
return x + y + z;
}
console.log(add(2, 3)); // 결과: NaN
console.log(add(2, 3, 4)); // 결과: 9
하지만 자바스크립트에서는 따로 오버로딩 기능을 제공하지 않고있다. 따라서 같은 이름의 매개변수를 여러개 선언할 경우 위의 코드와 같이 나중에 선언된 것이 이전에 선언된 것을 덮어쓰게 된다.
대신 js에서 arguments객체를 이용해서 오버로딩과 비슷한 효과를 낼수가 있다.
function add() {
let sum = 0;
for (let i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum;
}
console.log(add(2, 3)); // 결과: 5
console.log(add(2, 3, 4)); // 결과: 9
console.log(add(1, 2, 3, 4, 5)); // 결과: 15
위의 코드와 같이 add함수는 매개변수를 명시적으로 정의하지 않아지만 함수 내에서 arguments 객체를 이용해서 전달된 모든 인자를 더하는 방식으로 처리한다. 이렇게 하면 함수가 다양한 수의 인자를 처리할 수 있게 된다.
주의할 점은 'arguments'객체는 배열이 아니기 때문에 배열 메서드를 직접 사용할 수는 없다.
arguments 설명
https://moo-you.tistory.com/541
728x90
반응형