안녕하세요. 박기린 입니다.
이번엔 '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 사용은 추천하지 않습니다.
반응형
'JS > JavaScript 강의' 카테고리의 다른 글
[JS] 49. forEach Method (0) | 2022.12.09 |
---|---|
48. Array의 기본 메소드 part.2 (slice, splice, reverse, concat, join, at) (0) | 2022.12.07 |
46. Bind Method (0) | 2022.11.30 |
45. Call and Apply Methods (0) | 2022.11.29 |
44. Callback Functions (일급함수, 고차함수) (0) | 2022.11.28 |