1. 함수 리터럴
function func() {
...
}
2. 함수 표현식(변수에 할당)
let func = function() {
...
};
3. 함수 선언문
/**
* 선언보다 나중에 함수가 정의되어도 실행이 된다.
* (함수 호이스팅)
*/
func();
function func() {
...
}
위 방식에는 주요한 차이점 2가지가 존재한다.
1. ';'의 작성 권고 유무
- 1.은 블럭의 의미
- 2.는 변수 선언의 의미이므로 만일의 경우 심각한 에러를 불러올 수 있다.
2. 사실 2번은 내부적으로 아래와 같이 변형된 후 사용된다.
let func = function func() {
...
};
그래서 func()와 같이 외부에서 호출해서 쓸 수 있는 것.
3. 3.은 함수 호이스팅이 가능
- 권장되지 않음
아래는 참조
- 일반적으로 함수 표현식을 통해 변수에 할당하는 방법에서 함수의 이름을 익명으로 정해주는 경우가 많으나,
함수 내에서 재귀적인 호출이 필요할 경우, 이름을 지정해준다.
func(); /** O */
let func = function funcFunc() {
funcFunc(); /** O(내부에서만 호출 가능) */
...
};
funcFunc(); /** X(외부에서 호출 불가) */
'Dev- > java script, jQuery, Ajax' 카테고리의 다른 글
자바스크립즉시 실행함수 (0) | 2019.05.01 |
---|---|
함수도 객체다. 자바스크립트 (0) | 2019.05.01 |
자바스크립트 배열 리터럴의 요소, 프로퍼티의 차이점 (0) | 2019.04.28 |
Requested JSON parse failed. [Failed], parsererror에러 해결법 (0) | 2019.04.26 |
캘린더(달력) 세팅 함수 - 자바 스크립트 (0) | 2019.04.20 |