즉시실행함수 IIFE란?

이예슬·2022년 7월 27일
0

스터디

목록 보기
5/10

IIFE

함수 정의와 동시에 즉시 호출되는 함수를 즉시 실행함수(IIFE, Immediately Invoked Function Expression)라고 한다.

즉시 실행 함수는 단 한 번만 호출되며 다시 호출할 수 없다.

// 익명 즉시 실행 함수
//(function(){}())
(function () {
  let a = 3;
  let b = 5;
  return a * b;
})();

즉시 실행함수는 익명함수를 사용하는 것이 일반적이나 이름이 있는 즉시 실행 함수도 가능하다. 하지만 이 역시 다시 호출할 수는 없다.

//기명 즉시 실행 함수 
(function foo(){
    let a = 3;
    let b = 5;
    return a * b;
}())

foo() //referencError : foo is not defined

💡 즉시 실행 함수는 반드시 그룹 연산자 (...) 로 감싸야 한다.

Untitled

→ 익명 즉시 함수의 경우 함수 선언문 형식에 맞지 않기 때문에 에러가 발생한다.

→ 기명 즉시 함수의 경우 자바스크립트 엔진이 암묵적으로 수행하는 세미콜론 자동 삽입 기능에 의해 함수 선언문이 끝나는 위치에 ‘;’ 이 암묵적으로 추가하기 떄문에 에러가 발생한다.

그룹 연산자의 피연산자는 값으로 평가되므로 기명 또는 익명 함수를 그룹 연산자로 감싸면 함수 리터럴로 평가되어 함수 객체가 된다.

즉 그룹 연산자로 함수를 묶은 이유는 먼저 함수 리터럴을 평가해서 함수 객체를 생성하기 위해서다.

  • 즉시 실행함수도 일반 함수처럼 값을 반환할 수 있고 인수를 전달할 수도 있다.

Untitled

💡 즉시 실행 함수를 쓰는 이유?

👉 즉시 실행 함수 내에 코드를 모아 두면 변수나 함수 이름의 충돌을 방지할 수 있다. 즉 모든 코드를 즉시 실행 함수로 감싸면 모든 변수는 즉시 실행 함수의 지역 변수가 된다. 이 방법을 사용하면 전역 변수를 생성하지 않으므로 라이브러리 등에 자주 사용된다.

profile
꾸준히 열심히!

0개의 댓글