함수 표현식을 사용하면 즉시 호출하는 함수 표현식( IIFE )이란 것을 만들 수 있다. IIFE 는 함수를 선언하고 즉시 실행함.
(function () {
//IIFE 바디
}
})();
함수 표현식으로 익명함수를 만들어준다음에 즉시 호출하는 것!
장점: 내부에 있는 것들이 모두 자신만의 스코프를 가지지만, IIFE 자체는 함수이기 때문에 그 스코프 밖으로 무언가를 내보낼 수 있다는 것.
(뭔가 정말로 비밀 메세지 같아서 예제가 재밌었다 ㅎㅎ)
const message = (function() {
const secret = "I'm a secret!" ;
return `The secret is ${secret.length} characters long!`;
})();
console.log(message);
자신이 몇 번 호출되었는지 보고하는 함수
이 함수가 몇 번 호출됐는지 저장한 값을 외부에서는 절대 손댈 수 없다.
ES6 에서 블록 스코프 변수 ( let, const )를 도입하면서 IIFE가 필요한 경우가 줄어들었지만 여전히 널리 쓰인다고 한다.
클로저를 만들고 클로저에서 무언가 반환받을 때에 유용하게 사용이 가능하다!