즉시 호출 함수 IIFE (Immediately-invoked function expression )

다른 라이브러리(플러그인) 또는 업무쪽 공통 소스를 살펴보면, 아래 같은 형태의 함수 정의가 많이 보인다.

다른 라이브러리를 살펴보거나 공통 소스를 건드릴 일이 없었기에 단순히 jQuery의 ready Function 같은 구조라고 생각했으나, 전혀 다르다.

 

즉시 호출 함수(IIFE)는 말그대로 정의하고 즉시 실행하는 함수라고 생각하면 된다.

 

 

(function () {
    //---------------------------------------------------------------------
    // AAA for JavaScript
    //
    // Copyright (c) AAA
    //
    // URL: AAA
    //
    // Licensed under the MIT license:
    //   http://www.opensource.org/licenses/mit-license.php
    //
    //
    //---------------------------------------------------------------------
    
})()

 

라이브러리(플러그인)에서는 위와 같은 형태로 IIFE를 사용하고 있다.

 

즉시 호출 함수 사용 이유

즉시 호출 함수에 정의한 기능, 변수들은 호출 시 단 한번만 실행되고 종료된다.

Javascript는 변수, 함수 선언 시 전역으로 선언되기에 즉시 호출 함수 선언 시 전역에 함수, 변수가 선언되지 않아

다른 소스들과 충돌없이 서비스를 구현할 수 있다.

(function () {
    var aName = "Barry";
})();
// IIFE 내부에서 정의된 변수는 외부 범위에서 접근이 불가능하다.
aName // throws "Uncaught ReferenceError: aName is not defined"

 

 

출처 : https://developer.mozilla.org/ko/docs/Glossary/IIFE

출처 https://medium.com/@soyoung823

+ Recent posts