즉시 실행 함수는 호출되는 즉시 실행되며 단 한번만 호출되어 다시 호출할 수 없다. 즉시 실행 함수 내에 코드를 모아 두면 혹시 있을 수 도 있는 변수나 함수 이름의 충돌을 방지할 수 있다.
: 기명 함수를 써도 외부에서 호출 불가능
-> 그룹 연산자내에서는 함수 선언문이 아닌 리터럴로 평가되기 때문에
리터럴로 평가해서 함수 객체를 생성 후 호출연산자를 사용하기 위해서
*함수선언문은 호출 연산자 사용시 에러 발생. -> 함수 호출 연산자가 아닌 그룹 연산자로 해석되며 피연자가 없다는 에러 발생
(function () {...}());
(function () {...})();
//연산자를 사용하여 선언문이 아닌 리터럴(표현식)으로 평가
!function () {...}();
+function () {...}();
// return 값 변수에 할당
let res = (function(){
let a =3;
let b = 5;
return a+b;
}());
console.log(res); //8
//인수전달
let lFun = (function(a,b){
return a*b;
}(3,5));
console.log(res); //15
자바스크립트에서 함수 내부는 해당 함수의 지역 스코프로 간주됩니다. 따라서 즉시 실행 함수를 사용하면 함수 내부에 정의된 변수와 함수는 외부 스코프에서 접근할 수 없습니다. 이는 변수와 함수 이름의 충돌을 방지하는 데 도움이 됩니다.
또한, 전역 스코프에서 정의된 함수는 전역 함수로 간주됩니다. 전역 함수는 다른 코드에서 접근할 수 있는 함수이므로, 전역 스코프에 변수나 함수를 추가하는 것은 전역 네임스페이스를 오염시킬 수 있습니다. 즉시 실행 함수를 사용하면 변수와 함수를 캡슐화하여 전역 스코프를 깨뜨리지 않고 사용할 수 있습니다.
따라서 즉시 실행 함수를 사용하면 변수와 함수 이름의 충돌을 방지하고 전역 스코프를 깨뜨리지 않으면서 코드를 모듈화할 수 있습니다.