[JS]즉시 실행 함수

Na Jeong·2023년 1월 12일
0

JavaScript

목록 보기
1/2
post-thumbnail

🧐즉시실행함수

즉시실행함수(Immediately Invoked Function Expression)은 정의되자마자 즉시 실행되는 함수이다.

(function () {
	statements
})();

//화살표 함수일 경우
(() => {
	statements
})();

즉시실행함수는 다음과 같이 소괄호로 함수를 감싸서 실행하는 문법이다.

즉시실행함수에 이름을 붙일 순 없을까 ?
: 즉시실행함수에도 이름을 붙여 사용할 수 있지만, 선언과 동시에 호출되어 반환되면 재사용을 할 수 없기 때문에 이름ㅇ르 지어주는 것이 의미가 없다.

💡즉시실행함수 사용 이유

1. 전역변수 사용을 억제할 수 있다.

전역변수를 사용하면

  • 모든 코드에서 전역변수를 참조하고, 변경하기 때문에 상태 변경의 위험성이 높다.
  • 생명주기가 어플리케이션의 생명주기와 동일하므로 메모리 리소스 소비기간이 길고, 상태 변경에 의한 오류발생 확률이 높다.
  • 스코프 체인 상에서 종점에 존재하기 때문에 가장 마지막에 검색된다. 즉, 검색 속도가 가장 느리다.
  • 다른 파일 내에서 동일한 이름으로 전역 변수나 전역 함수를 재할당 할 경우 예상치 못한 결과를 가져올 수 있다.

전역변수는 이런 문제점이 있으므로 사용을 하지 않는것이 좋다.

2. private한 변수를 만들 수 있다.

즉시실행함수는 외부에서 접근할 수 없는 자체적인 스코프를 가지게 된다. 이는 클로저의 사용 목적과도 비슷하며 내부 변수를 외부로부터 private하게 보호할 수 있다는 장점이 있다.

💡예제

아래 함수는 즉시실행되는 함수 표현이다. 표현 내부의 변수는 외부로부터의 접근이 불가능하다.

(function){
	const aName = "Barry";
})();
//IIFE 내부에서 정의된 변수는 외부 범위에서 접근이 불가능하다.
aName //throws "Uncaught ReferenceError : aName is not defined"

IIFE를 변수에 할당하면 IIFE 자체는 저장되지 않고, 함수가 실행된 결과만 저장한다.

const result = (function() {
	const name = "Barry";
    return name;
})();
//즉시 결과를 생성한다.
result; //"Barry"

참조 : https://developer.mozilla.org/ko/docs/Glossary/IIFE

profile
끊임없이 노력하는 프론트엔드 개발자 (⸝⸝⍢⸝⸝) ෆ

0개의 댓글