반응형
즉시 실행 함수
함수를 정의하면서 동시에 실행까지 하는 함수
⭐️ 한 번 실행되고 나면 메모리에 데이터가 남지 않음
(function(){})();
일반적으로 함수를 선언하면 전역 스코프에 정의되어, 프로그램이 종료되기까지 메모리에서 사라지지 않는다.
아래 코드는 함수 표현식으로 정의된 init() 함수이다.
const init = function(){
console.log("initialized!");
}
이 함수는 어차피 한 번만 사용할 함수인데,
const 키워드에 할당했기 때문에 프로그램이 종료되기 전까지 init 식별자는 재사용 불가하다.
이러한 현상을
전역 스코프가 오염됐다
고 표현한다.
이런 경우 즉시 실행 함수로 함수를 정의하면 전역 스코프가 오염되는 것을 방지할 수 있다.
(function init() {
console.log("initialized!");
})(); // initialized!
init(); // ReferenceError: init is not defined
왜냐하면 즉시 실행 함수는 한 번 실행되고 나면 메모리에 데이터가 남지 않는다.
즉, init 식별자는 한 번도 사용하지 않은 것처럼 인식된다.
위의 코드처럼 즉시 실행 함수를 호출한 다음에 init()으로 호출하면 init이 정의되어있지 않다고 오류가 발생한다.
(function init() {
console.log("initialized!");
})(); // initialized!
function init() {
console.log("initialized!");
}
init(); // initialized!
즉시 실행 함수를 활용한다면 init 식별자로 함수를 다시 만들었을 때도 아무런 문제가 되지 않는다.
최초로 딱 한 번 실행되거나 전역스코프를 오염시키지 않고 자유롭게 사용하고 싶을 때, 즉시 실행 함수를 활용하면 된다.
반응형
'HTML + CSS + 자바스크립트' 카테고리의 다른 글
Array 객체의 파괴적 메서드 VS 비파괴적 메서드 (0) | 2023.12.11 |
---|---|
객체 속성 다루기 # 접근방법, 객체 속성 추가, 삭제, 객체의 특성 : 얕은 복사 (2) | 2023.12.08 |
자바스크립트 함수 정의하는 3가지 방법 (0) | 2023.12.06 |
if문 VS switch문 : 어떤걸 사용해야할까?? 차이점은?? (2) | 2023.12.05 |
문자열에 ''(작은 따옴표), ""(큰 따옴표) 넣으면 에러 해결하기 (2) | 2023.12.04 |