몽땅뚝딱 개발자

[Javascript] 오버로딩(Overloading) 본문

Development/Javascript

[Javascript] 오버로딩(Overloading)

레오나르도 다빈츠 2021. 7. 7. 21:06

 

출처

 

자바스크립트 중고급: 근본 핵심 이해 - 인프런 | 강의

4개 강좌로 구성된 자바스크립트 바이블 강좌의 2번째 강좌입니다. 자바스크립트 엔진 이해를 통해 자바스크립트에 최적화된 프로그램을 개발할 수 있습니다. 자신 있게 시스템을 설계할 수 있

www.inflearn.com

 

 


 

🚀 오버로딩(Overloading)

 

함수는 이름이 같더라도 파라미터의 수 또는 값 타입이 다르면 각각 존재할 수 있다.

함수를 호출하면 파라미터 수와 값 타입이 같은 함수가 호출된다.

 

자바에서도 메소드 이름이 같더라도 파라미터나 값 타입이 다르면 선언이 가능한 경우를 말하는 것 같다.

// 이름은 같더라도 파라미터의 개수나 데이터 타입에 따라 다른 것으로 인식
function make(one) {};
function make(one, two) {};
function make(one, two, three) {};

 

하지만, 자바스크립트는 오버로딩을 지원하지 않는다.

왜냐하면 자바스크립트는 파라미터와 수와 값 타입을 구분하지 않고 {name:value} 형태로 저장하기 때문이다.

함수의 이름(name)이 같으면 후에 선언된 함수 오브젝트로 대체된다.

 

***

 

 

STEP 1. 함수 선언문 초기화

function make() {
    // 2: getMake()를 만나 getMake 오브젝트를 생성한다.
    function getMake() { 
        return "첫번째";
    };

    getMake(); // 3: 호출하지 않고 아래로 내려간다.

    // 4: getBook 오브젝트를 생성하는데, 이전에 생성된 같은 이름의 getBook이 있으므로
    // 새로 생성하지않고 이전에 생성된 getBook 오브젝트로 대체된다.
    // {name:value} 형태에서 이름(name)이 같으므로 값(value)이 변경된다.
    function getMake() {
        return "두번째";
    };
};

make(); // 1



STEP 2. 변수 초기화

// 1: 함수 표현식과 변수에 undefined를 설정한다.
// 하지만 여기서는 초기화 할 대상이 없다.
function make() {
    // 2: 엔진 컨트롤이 여기로 이동하여 코드를 실행한다.
    function getMake() { 
        return "첫번째";
    };

    getMake();
    
    function getMake() {
        return "두번째";
    };
};

make();



STEP 3. 코드 실행

function make() {
    function getMake() { // 1: 함수 선언문이므로 통과 
        return "첫번째";
    };

    console.log(getMake()); // 2: 함수를 호출하고, getMake() {return "두번째";}가 실행된다.

    function getMake() { // 3: 함수 선언문이므로 처리하지 않는다.
        return "두번째";
    };
};

make();

 

[실행 결과]

두번째

 

 

'Development > Javascript' 카테고리의 다른 글

[Javascript] 스코프(Scope)  (0) 2021.07.07
[Javascript] Argument 처리  (0) 2021.07.07
[Javascript/ES6+] Arrow Function  (0) 2021.07.07
[Javascript/ES6+] const 변수  (0) 2021.07.07
[Javascript/ES6+] 호이스팅  (0) 2021.07.07
Comments