본문 바로가기
내가 보려고 정리한 JavaScript

[JavaScript] Function

by nacastle 2020. 6. 16.

 

-오버로딩 개념 없음

함수 이름으로만 구분

 

-함수도 hoisting이 가능

(함수 선언부가 호출부보다 밑에 있어도 호출 가능)

 

-선언적 함수 방식

 

 

-자바스크립트에서 함수는 함수 이름만이 의미가 있다... 매개변수가 있든 없든 몇개가 있든 함수는 실행됨(오버로딩 지원 안됨)

ex...

 

function aaa() {
alert("call aaa()")
}


function aaa(data) {
alert("call aaa(data)")
}


function aaa(a,b) {
alert("call aaa(a,b)")
}

 

 

- 선언적 함수 vs 익명 함수

=> 익명 함수가 우선 순위 더 높음

 

 

-함수의 매개변수로 익명함수를 받을수도있다. (callback 함수)

-리턴타입으로 함수를 받을 수도 있다.

 

callback함수는 주로 익명함수를 매개변수로 받아 만들어진다...마치 오버로딩의 상위 버젼같은 느낌..?

 

 

- arguments?

 

 

- undefined는 boolean값으로 false 다

 

let은 블럭 스코프, var는 함수 스코프

 

매개변수가 함수인 경우: callback

리턴값이 함수인 경우: 클로져(Closer)

 

 

 

클로져: 근본 함수내에서 정의된 변수를 계속 기억하게 하기 위해서(글로벌 변수로 만들기 위해서)

 

클로저는 자신이 생성될 때의 환경(Lexical environment)을 기억하는 함수다라고 말할 수 있겠다.

 

ex..

function returnFunc(name) {
var msg = '반갑습니다 ' + name + '!!!';
return function() {
alert(msg);
};
}

 

=> msg라는 변수를 글로벌 변수화

=> 원래는 함수에 담긴 변수는 함수 안에서만 돌고 사라지는데, 클로져로서 글로벌 변수화했기 때문에 글로벌 단계에서 사라지지 않음

 

 

 

- 받아오는 매개변수 값이 없어도 그 함수 호출 가능(에러 안뜸)

 

ex.

function f(msg) {
alert("!!!");
}

f()

 

 

 

 

 

 

 

반응형

'내가 보려고 정리한 JavaScript' 카테고리의 다른 글

[JavaScript] Array 2  (2) 2020.06.17
[JavaScript] Object (객체)  (0) 2020.06.17
[JavaScript] Function 2  (0) 2020.06.17
[JavaScript] Array  (2) 2020.06.16
[JavaScript] Basic  (1) 2020.06.16