ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 즉시 실행 함수에 대해
    카테고리 없음 2023. 7. 12. 23:11

    코드 리뷰 중 생긴 일

    새로고침을 막기 위해 beforeUnload 이벤트를 이용하여 코드를 작성 후 pr을 열었다.
    하지만 팀원이 이러한 리뷰를 달았다.

    팀원의 코드리뷰를 보고 나는 "어 저렇게 해도 될 거 같은데?"라는 의문이 들었다. 하지만 실제로는 작동되지 않았고 그때 나도 내가 짠 코드가 즉시실행 함수이기에 작동이 되었다는 걸 알았다.

     

    즉시 실행 함수

    그렇다면 즉시 실행 함수란 무엇일까?

    함수 정의와 동시에 실행되는 함수를 즉시 실행 함수라고 한다.
    즉시 실행 함수는 단 한 번만 호출되며 다시 호출할 수 없다.

     

    왜 안 되는 것일까?

    구글링을 해보니 즉시 실행 함수는 그룹 연산자(...)로 감싸야한다고 한다.
    그렇지 않으면 에러가 발생한다고 한다.

     

    즉시 실행 함수는 왜 사용되는가?

    1. 필요 없는 전역 변수 생성을 줄일 수 있다.

    함수를 생성하면 그 함수는 전역 변수로써 남아있게 되고, 많은 변수의 생성은 전역 스코프를 오염시킬 수 있다.

    하지만 즉시실행함수를 선언하면 내부 변수가 전역으로 저장되지 않기 때문에 전역 스코프의 오염을 줄일 수 있다.

     

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

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

     

    결론

       (() => {
          window.addEventListener('beforeunload', preventClose); //익명의 함수를 선언하고 그룹연산자로 한번더 감쌈으로서 즉시실행이 된다. 
        })(); 
    
        () => window.addEventListener('beforeunload', preventClose); // 익명의 함수만 선언된것이다.

    내가 생각한 결론은 아래 코드는 한마디로 함수를 선언한 것이었다. 그러므로 실행이 되지 않았던 것이다.

    위의 코드는 그룹연산자로 한 번 더 덮었기에 익명의 함수가 선언돼서 실행이 된 것이었다.

     

Designed by Tistory.