Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 성능최적화
- 반복줄이기
- react
- TSDoc
- React Native
- 2022
- 공통컴포넌트
- React.js
- javascript
- 누구나 자료구조와 알고리즘
- JS console
- 티스토리꾸미기
- 리액트
- Chart.js
- click and drag
- 타입좁히기
- 레이아웃쪼개기
- 개발콘텐츠
- 커스텀
- CSS
- vue.js
- const 단언문
- 타입스크립트
- 폰트적용하기
- NonNullable
- 제네릭
- returnType
- typescript
- reactjs
- utilty type
Archives
- Today
- Total
몽땅뚝딱 개발자
[Javascript] 오버로딩(Overloading) 본문
출처
🚀 오버로딩(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