[JS #7] 즉시실행함수(IIFE)

제로베이스 JavaScript 완전 정복

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

정의되자마자 바로 실행되는 함수

MDN 바로가기

형태는 아래와 같다.

(function () {
  statements;
})();

이 함수를 사용하는 이유는 공간 또는 새로운 스코프를 생성할 수 있기 때문이라고 한다

블록 스코프를 흉내낸듯한 새로운 스코프를 만들어내는 효과가 있다.

(function () {
  var aName = "Barry";
});

if (true) {
  var temp = "";

  (function () {
    var temp = "hello";

    console.log(temp);
  })();
}

console.log(temp);

외부에서 즉시실행함수 내부에 접근이 불가능하기 떄문에 숨겨야할 데이터를 변수로 사용할 때 사용했다고 한다.

(function () {
  var privateData = "secret"; // 숨겨야할 데이터

  console.log(privateData);
})();

여러 즉시실행함수와 붙어서 실행되는 경우가 많기 때문에 꼭 끝에 세미콜론(;)을 붙여서 사용하는 것이 좋다고 한다.

(function () {})();
(function () {})(); // 세미콜론을 붙이자

letconst가 없는 과거 버전에서 많이 사용했으며 요즘은 많이 사용되지 않는 함수.