본문 바로가기
JS/JavaScript 강의

47. IIFE 함수

by 박기린 2022. 12. 2.

안녕하세요. 박기린 입니다.

이번엔 'IIFE - Immediately Invoked Function Expressions' 에 대해 알아보겠습니다.

 

 

평범한 함수

const runOnce = function () {
    console.log('This will never run again');
};
runOnce();

일반적인 함수는 이렇게 생겼습니다. 일단 함수를 선언한 후, 함수를 호출해서 사용합니다.

 

 

 


IIFE - 즉시 실행 함수 표현

(function (
) {
    console.log('This will never run again');
    const isPrivate = 23;
})();
console.log(isPrivate); // Undefined

IIFE는 함수를 괄호로 묶어서 즉시 호출시킵니다. 특징이라고 한다면, 즉시 호출이다보니 함수가 이름이 없는 익명함수 입니다.

 

실행 결과물

함수이다보니 closure-scope의 개념이 적용되고, 익명함수 내부에 선언된 isPrivate를 외부에서 접근하려고 하면 에러가 발생합니다.

이렇게 내부 변수를 외부에서 접근할 수 없다보니, 보안에 활용할 수 있을 것으로 보입니다.

 

 

 

(() => console.log('This will ALSO never run again'))();

 

화살표 함수에도 적용가능합니다.

 

 

 

 


IIFE에 var은 사용하지 말자

{
    const isPrivate = 23;
    var notPrivate = 46;
}
console.log(isPrivate); // undefined
console.log(notPrivate); // 46

실행 결과물

구식 변수 선언 방식인 var은 변수의 scope 보호가 전혀 이뤄지지 않습니다. (이에 대한 구체적인 설명글 : https://arnopark.tistory.com/471)

그래서 IIFE의 장점인 내부변수 보호를 전혀 사용할 수 없기에, IIFE에서 var 사용은 추천하지 않습니다.

반응형