• 티스토리 홈
  • 프로필사진
    루루개발자
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
루루개발자
  • 프로필사진
    루루개발자
    • 분류 전체보기 (213)
      • react & next.js (13)
      • Node.js & Javascript & Type.. (24)
        • d3.js (10)
      • 차트 만들기 (1)
      • 티스토리 스킨 개발 (7)
      • 내가 만든 패키지 (3)
      • 내가 만든 CSS (1)
      • CSS (7)
      • 도커 & 쿠버네티스 (3)
      • 개인 프로젝트 (7)
      • 리뷰 & 추천 (2)
      • 알고리즘 (1)
      • IT 기타 (18)
      • 잡동사니 (1)
      • Spring Boot (5)
      • 취미로 그리는 그림들 (120)
      • 개인적인 생각들 (0)
  • 반응형
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • 클로저(Closure)에 대해 알아봅시다.
        2022년 06월 11일
        • 루루개발자
        • 작성자
        • 2022.06.11.:21
        반응형

         

        안녕하세요. 루루개발자 입니다.

        이번에는 클로저(Closure) 에 대해 알아보려고 합니다.

         

         

        클로저(Closure) 란?


        일반적으로 함수 내에 선언된 지역 변수들은 그 함수가 처리되는 동안에만 존재합니다. 즉, 함수가 종료되면 (리턴되면) 함수 내에 선언되었던 변수는 파괴되고 더 이상 접근 불가능 하다고 생각하는 것이 일반적입니다만, 예외가 존재합니다.

         

        function makeFunc() {
          const name = "홍길동";
          function displayName() {
            alert(name);
          }
          return displayName;
        }
        
        const myFunc = makeFunc();
        myFunc();

         

        위 예시에서 name 이란 변수는 "makeFunc" 함수 내에 선언된 지역 변수 입니다. "displayName" 이란 함수는 자신의 외부에 선언된 name 이란 변수를 참조하고 있습니다. 그리고 "makeFunc" 함수는 그러한 "displayName" 함수를 반환(리턴) 하고 있습니다.

         

        • makeFunc 함수 입장에서 봤을 때 name 변수는 자신의 내부에 선언된 지역 변수입니다.
        • displayName 함수 입장에서 봤을 때 name 변수는 자신의 외부에 선언된 변수입니다.

         

        "myFunc" 함수를 호출하면 정상적으로 "홍길동"이 alert 창이 표시되는 것을 확인 할 수 있습니다. 일반적으로 생각하면 "makeFun" 함수가 종료되는 시점에서 name 변수가 파괴되어 "displayName" 이 호출 될 시 정의 되지 않은 변수를 호출하여 에러가 발생할 것으로 예상되지만 사실은 그렇지 않습니다. 

         

        "displayName" 함수는 "makeFun" 함수에서 생성되어 "myFunc" 변수에 저장되어 있는 상태입니다. (즉, 언제든지 사용할 수 있는 상태입니다.) "myFunc" 변수에 저장되어 있는 "displayName" 함수는 본인이 호출 될 때, name 이란 변수를 참조해야 하기 때문에 name 변수를 사용 가능한 상태로 남겨두게 되는데 이 현상은 "displayName" 함수가 name 변수에 대해 클로저를 생성한 것이라고 볼 수 있습니다.

         

        즉, 클로저는 "자신이 선언될 당시의 환경을 기억하는 것" 이라고 볼 수 있습니다. (displayName 함수는 자신이 선언되었을 때 name 이란 변수를 계속 기억하고 있는 것이라고 볼 수 있기 때문입니다.)

         

         

         

        참고자료


        https://developer.mozilla.org/ko/docs/Web/JavaScript/Closures

         

        클로저 - JavaScript | MDN

        클로저는 함수와 함수가 선언된 어휘적 환경의 조합이다. 클로저를 이해하려면 자바스크립트가 어떻게 변수의 유효범위를 지정하는지(Lexical scoping)를 먼저 이해해야 한다.

        developer.mozilla.org

         

        https://hanamon.kr/javascript-%ED%81%B4%EB%A1%9C%EC%A0%80/

         

        [JavaScript] 클로저(Closures)란 무엇일까? - 하나몬

        ⚡️클로저(Closures) 클로저를 이해하기 앞서 먼저 스코프를 알아야합니다.   💡 클로저 함수의 장점 (활용) ❗️장점1. 데이터를 보존할 수 있다. 클로저 함수는 외부 함수의 실행이 끝나더라도

        hanamon.kr

         

         

        반응형

        'Node.js & Javascript & Typescript' 카테고리의 다른 글

        package.json 의 버전 표기법 (npm)  (0) 2022.12.24
        Node.js 16.15.1 설치시 npm 에서 "config global `--global`, `--local` are deprecated" 경고 발생 현상  (0) 2022.06.21
        웹에서 url scheme 로 앱 호출시 앱 설치 여부 감지 방법  (0) 2022.06.09
        javascript 난독화 이슈 (생성자 인자의 파라미터명)  (0) 2022.05.11
        javascript 파일 난독화  (0) 2022.05.10
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바