-오버로딩 개념 없음
함수 이름으로만 구분
-함수도 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 |