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

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

즉시실햄함수란 정의 된 즉시 실행되는 javascript의 함수힙니다. 일반적으로 함수는 함수선언 또는 함수표현식을 이용하여 함수를 작성하고 함수를 사용하려면 함수를 호출해야합니다.

1
2
3
4
5
// 함수선언
function plus(a,b) {
return a + b;
}
console.log(plus(2,4)); // 6
1
2
3
4
5
// 함수표현식
const plus = function(a,b) {
return a + b;
}
console.log(plus(2,4)); // 6

그러나 IIFE(즉시실행함수)는 익명함수선언 후 함수가 괄호로 묶여있고 ()괄호로 바로 호출하여 컴파일러가 코드를 읽는 즉시 함수를 실행시킵니다.

1
2
3
(function() {
alert("Hello Javascript");
})(); // Hello Javascript

위 코드를 사용하게 되면 컴파일러가 코드를 읽는 즉시 alertHello Javascript가 출력됩니다.

IIFE를 사용하는 이유!

1
2
3
4
(function() {
var hello = "Hello Javascript";
})();
console.log(hello); // Uncaught ReferenceError: hello is not defined
  1. 즉시실행함수를 사용하게 되면 함수내에서 정의된 변수는 함수 외부에서 접근이 불가합니다.
1
2
3
4
5
6
7
8
var plus = (function () {
var first = 1;
var second = 2;
return first + second;
})();
console.log(plus); // 3
console.log(first); // Uncaught ReferenceError: first is not defined
console.log(second); // Uncaught ReferenceError: second is not defined
  1. 즉시실행함수를 변수에 할당하면 즉시실행함수는 저장되지 않고, 함수가 실행된 결과만 저장됩니다. 이 역시 함수 내부에서 선언된 변수에는 접근이 불가합니다.

추가로 익명함수를 사용하여 실수로 함수 호출하는 실수를 막을 수 있습니다.

공유하기