자바스크립트에서는 오버로딩 기능을 제공하지 않는다.
(매개변수 형태가 다른 함수여도) 동일한 이름의 함수가 정의되면, 함수가 재정의된다.
책에서 보니 함수 이름 충돌때문에, 내부 함수로 많이 사용한다고 적혀져 있었다.
그럼 오버로딩 기능은 사용할 수 없는 건가? 궁금해서 찾아보니 변수 arguments 를 사용하여 오버로딩 기능을 구현할 수 있었다.
변수 arguments 는 모든 전달인자를 받는 배열이다.
따라서 arguments의 크기에 따라 다른 처리를 해주면 된다.
<script>
function func(s1, s2) {
if (arguments.length == 1) {
alert(s1);
}
else {
alert(s1 + s2);
}
}
func('hi');
func('hi', 'java script');
</script>
'Web > JavaScript' 카테고리의 다른 글
[JavaScript] 객체 (0) | 2019.08.09 |
---|---|
[JavaScript] 콜백 함수 (0) | 2019.08.08 |
[JavaScript] 가변 인자 함수 (0) | 2019.08.08 |
[JavaScript] 선언적 함수 (0) | 2019.08.08 |
[JavaScript] 비교 연산자와 일치 연산자 (0) | 2019.08.08 |