Dev_Study/JavaScript

[JS] 즉시 실행 함수(Immediately Invoked Function Expression, IIFE)

LeeDaniel 2024. 12. 18. 17:30
[ 즉시 실행 함수(Immediately Invoked Function Expression, IIFE) ]
즉시 호출되는 함수 또는
즉시 호출되는 함수 표현식(Immediately Invoked Function Expression 또는 IIFE)은
자바스크립트(Javascript)의 함수 범위를 사용하여
실행범위를 생성하는 자바스크립트 프로그래밍 언어 구문이다.
자동실행함수로도 불린다.

즉시 호출된 함수 표현식을 사용하여
로컬 블록 내에서 지역 변수 호이스팅을 방지하고,
글로벌 환경에서 전역변수를 오염시키는 것을 방지하며
함수 내에 정의된 변수에 대한 프라이버시를 유지하면서
동시에 메서드(method)에 대한 공개 엑세스를 허용할 수 있다.


[ 예시 ]
<!-- 예시_1 -->
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meata name="viewport"
      content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
    <title>Immediately Invoked Function Expression</title>
  </head>
  <body>
   <script>
    window.onload = (function(i) {
      alert('Hello');
    });
   </script>
  </body>
</html>
예시_1의 결과

<!-- 예시_2 -->
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meata name="viewport"
      content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
    <title>Immediately Invoked Function Expression</title>
  </head>

  <body>
   <script>
    window.onload = (function(i) {
      return function(){
        alert( i );
      }
    })('Immediately Invoked Function Expression');
    
    /*
     * 16Line의
     * ('Immediately Invoked Function Expression')으로
     * alert(i)가 실행되는 이유는
     * 클로저(Closure) 때문이다
     * (function(i) { ... })(i);의 형태일때
     * ('Immediately Invoked Function Expression')는
     * function(i)함수의 인자로 전달되며
     * function(i)함수는 i를 받아
     * 내부에서 클로저(Closure)를 생성한다
     * 반환된 클로저는 alert(i);를 호출한다
     */
    
   </script>
  </body>

</html>
예시_2의 결과

이 글은 크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0에 따라
공개된 위키백과 문서 즉시 실행 함수의 자료를 사용합니다.
728x90
반응형

'Dev_Study > JavaScript' 카테고리의 다른 글

[JS] 0.JavaScript  (0) 2021.06.16
[JS] 객체 ( Object )  (0) 2021.03.10
[JS] 배열 ( Array )  (0) 2021.03.10
HTML DOM 메소드  (0) 2021.03.04
BOM - Window  (0) 2021.03.04