JavaScript에서 IIFE는 무엇입니까?

때때로 JavaScript에서 한 번만 실행되고 다시는 실행되지 않는 함수가 필요합니다. 기본적으로 한 번 호출되면 바로 사라지는 함수입니다. 이를 어떻게 달성할 수 있습니까? 예를 들어 다음과 같이 할 수 있습니다.

const func1 = function(){
             console.log('this function will never run again!`)
                }
 func1();


그러나 우리가 원한다면 이 func1()을 다시 호출할 수 있습니다. 이것은 우리가 원하는 것이 아닙니다. 어딘가에 저장할 필요 없이 즉시 함수를 실행하고 싶습니다.
그래서 이것이 우리가 하는 방법입니다.
변수에 할당하지 않고 단순히 함수 표현식 자체를 작성합니다.

function(){
console.log('This function will never run again')
}


이것을 실행하면 JavaScript가 함수 명령문을 예상하기 때문에 함수 명령문에 함수 이름이 필요하다는 오류가 발생하지만 function 키워드로 새 코드 줄을 시작하기만 하면 됩니다.

여기서 우리는 이것이 단지 표현식이라고 생각하도록 JavaScript를 속일 수 있습니다. 이 모든 것을 GROUPING OPERATOR()로 간단히 래핑하면 됩니다.

(function(){
   console.log('This is will never run again!')
});


그래서 우리는 기본적으로 이전 문장을 표현식으로 변환합니다. 그러나 함수는 아직 실행되지 않았습니다. 함수를 실행하려면 다음과 같이 호출해야 합니다(일반 함수 호출에서와 같이 옆에 '()' 추가).

(function(){
   console.log('This is will never run again!')
})();


그래서 우리는 함수 표현식을 만들고 즉시 그것을 호출합니다. 이것이 바로 이 패턴을 IIFE(Immediate Invoked Function Expression)라고 하는 이유입니다.

이런 식으로 화살표 기능도 마찬가지입니다.

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


이 또한 다시는 실행되지 않습니다.

따라서 이것은 실제로 JavaScript의 기능이 아닙니다.

일부 개발자가 제안하고 널리 사용되는 패턴에 가깝습니다.

이 디자인 패턴은 자체 실행 익명 기능이라고도 합니다.
자체 실행 -> 생성되는 순간 실행됩니다.
익명 -> 이름이 없고 저장 변수가 아닙니다.

좋은 웹페이지 즐겨찾기