Lined Notebook

📦 IIFE

by juraffe juraffe

IIFE(Immediately Invoked Function Expression)

(function () { /* Your code here */ })();

익명 함수가 선언되지 마자 바로 실행되는 형태의 디자인 패턴의 하나로 두 부분으로 구성되어있다. 첫 번째는 괄호로 감싼 익명 함수와, 두 번째로 이를 실행하는 괄호로 구성되어있다.

>> let global_name = 'global user name';
undefined
>> (function () { let loc_name = '123'; console.log(global_name, loc_name); })();
global user name 123
>> console.log(loc_name);
Uncaught ReferenceError: loc_name is not defined
    <anonymous> debugger eval code:1

이런 식으로 IIFE를 사용하는 이유는 let이 나오기 전에 사용된 var는 스코프 개념이 없이 블록을 벗어나도 여전히 접근할 수 있어 예상하지 못한 버그가 발생하고 같은 맥락으로 서로 다른 개발자 또는 라이브러리를 사용하게 되면 중복된 전역 변수가 있을 경우 찾기 힘든 버그가 발생하게 되고, 또 고유한 값을 필요로 하지만 어떤 경우 공유된 객체를 참조하고 있어 원하는 동작이 안 되는 경우가 있다. 이때 IIFE를 이용해 글로벌 컨텍스트에서 로컬 컨텍스트로 전환되며 독립된 공간을 만들고 내부에 변수를 생성하게 되며 각 요청마다 외부와는 차단된 독립된 객체가 생성되게 된다.

'🌐 프로그래밍 > 🟨 자바스크립트' 카테고리의 다른 글

🤖 데이터 타입  (0) 2021.08.21
📦 IIFE  (0) 2021.05.30

블로그의 정보

🦒 Juraffe's note

juraffe juraffe

활동하기