즉시실행함수
함수 정의와 동시에 즉시 호출되는 함수를 즉시 실행 함수 라고 한다.
즉시 실행 함수는 단 한 번만 호출되며 다시 호출할 수 없다.
(function() {
let a = 3;
let b = 5;
return a * b;
}());
즉시 실행 함수는 함수 이름이 없는 익명 함수를 사용하는 것이 일반적이다.
그룹 연산자 (...) 내의 기명 함수는 함수 선언문이 아니라 함수 리터럴로 평가되며 함수 이름은 함수 몸체에서만 참조할 수 있는 식별자이므로 즉시 실행 함수를 다시 호출할 수는 없다.
//기명 즉시 실행 함수
(function foo(){
let a = 3;
let b = 5;
return a*b;
}());
foo(); // ReferenceError: foo is not defined.
즉시 실행 함수는 반드시 그룹연산자(...)로 감싸야 한다. 그렇지 않으면 다음과 같은 에러가 발생한다.
function(){
//...
}(); // SyntaxError: Function statements require a function name.
funtion foo() {
//...
}(); // SyntaxError: Unexpected token ')';
위의 예제에서 에러가 발생한 이유는 자바스크립트 엔진이 암묵적으로 수행하는 세미콜론 자동 삽입기능에 의해 함수 선언문이 끝나는 위치, 즉 함수 코드 블록의 닫는 중괄호 뒤에 ";"이 추가되기 때문이다.
function foo(){};(); 와 같다.
즉시 실행 함수도 일반 함수처럼 값을 반환할 수 있다.
let res = (function(){
let a = 3;
let b = 5;
return a*b;
}());
console.log(res); /// 15
일반 함수처럼 인수를 전달할 수도 있다.
let res = (function(a,b){
return a*b;
}(3,5));
console.log(res); /// 15
출처
'Study > JS' 카테고리의 다른 글
중첩함수 (0) | 2022.09.23 |
---|---|
재귀함수 (1) | 2022.09.23 |
스프레드 연산자 (1) | 2022.09.23 |
배열 문자열바꾸기 & 배열 중복 제거하기 (0) | 2022.09.23 |
배열 순서바꾸기 & 배열 정렬하기 (0) | 2022.09.23 |