JS IIFE(즉시실행함수)

code-bebop·2020년 9월 16일
0

즉시실행함수

즉시실행함수가 뭔지 안다고 생각했다. 근데 아래 코드를 읽고 있으려니

var favorite = (function () {
     return "blueberry";
}());

console.log(favorite); //"blueberry"


이게 왜 "blueberry"를 바로 반환하지? favorite()를 해야 "blueberry"를 반환하는 거 아닌가?
이런 생각을 하는 나를 발견하게 되었다.

이게 무슨소리냐? 나는 즉시실행함수가 뭔지 모르는데 안다고 생각하고 있었다.

즉시실행함수란?

즉시실행함수는 선언과 동시에 실행되는 함수를 의미하는 용어이다.
선언과 동시에 실행된다. 이것만 알면 된다. 선언과 동시에 실행된다.
이 사실에 집중하며 위의 코드를 다시 보자.

var favorite = (function () {
     return "blueberry";
}());

console.log(favorite); //"blueberry"
  1. "blueberry"를 반환하는 함수를 즉시실행함수로써 선언했다.
  2. 즉시실행함수를 선언했으니 선언과 동시에 실행 된다.
  3. 실행된 즉시실행함수는 "blueberry"를 반환한다.
  4. 반환된 "blueberry"는 favorite 변수에 할당된다.

그래서 favorite는 "blueberry"인 것이다.

즉시실행함수의 형태

즉시실행함수는 두 가지의 형태로 선언할 수 있다.

var favorite = (function () {
     return "blueberry";
}());

var favorite = (function () {
     return "blueberry";
})();

위의 코드와 아래의 코드는 완전히 같다.

즉시실행함수의 인자

즉시실행함수도 함수이기 때문에 인자를 받을 수 있다.

var favorite = (function (something) {
     return something;
}("blackberry"));

console.log(favorite);

위와 같이 즉시실행함수를 감싸는 소괄호와 쌍을 이루는 빈 소괄호에 인자를 전달하면 즉시실행함수의 인자로 전달된다.

마치며

애매하게 알고 있으면서 제대로 알고 있다고 생각하는 것이야말로 가장 위험한 일이다. 내가 그랬었다.

즉시실행함수는 주로 클로저를 생성하는 역할로써 자주 쓰인다. 하지만 아직 클로저에 대하여 자세히 알지 못하기에, 클로저에 대해 알아볼 때에 다시 꺼낼 것이다.

참고한 사이트

MDN - IIFE에 관한 웹 문서

profile
프론트엔드 꿈나무, 탐구자.

0개의 댓글