말그대로 정의되자마자 즉시 실행되는 함수 표현식을 말한다.
전역 스코프에 불필요한 변수를 추가해서 오염을 방지하고 내부로 다른 변수들의 접근을 막을 수 있다.
// 일반적인 함수 표현식
var app = function() {
console.log('함수 호출'); // "함수 호출" 출력
};
app();
// 즉시실행함수
(function() {
console.log('함수 호출'); // "함수 호출" 출력
}());
사실 이름을 지어줘도 상관은 없다.
근데 어차피 한번 자동으로 실행된 이후에 생명을 다하니까 의미가 없는거 같다.
//아래 함수선언문은 아무것도 반환하지 않는다(혹은 undefined)
function() {
}
//이런 표현식을 쓰면 !undefined는 true를 반환한다. 그리고 바로 실행하기도 함. 단, 리턴값이 없어야함
!function() {
}()
//함수 실행의 결과로 실제 반환되는 값을 얻으려면
(function(){
})();
//익명 즉시실행함수(더글러스 클락포드 권장표기법)
(function() {
}());
let func = (function() {
var counter = 0;
return function(){ // 클로저
return ++counter;
}
})();
func(); // 1
func(); // 2
func(); // 3
(async () => {
... 코드1
await promise();
... 코드2
})();
즉시 실행함수를 사용할 때는 세미콜론 (;)
을 붙여줘야 한다.