본문 바로가기
프로그래밍

아주 쉽게 설명해주는 자바스크립트 클로저 개념

by 갈매기19 2025. 4. 5.

전역변수: 어디서나 접근 가능한 변수 

지역변수: 특정 블록내 혹은 함수내에서 선언된 변수이고 함수가 종료되면 지역변수는 소멸한다.

 

하지만 함수에 지역변수 num이 있고 이 지역변수 num을 호출하는 함수를 리턴하면?

 

껍데기를 못구해 죽을 운명이였던 소라게가 새껍데기를 얻어 새삶을 얻은거처럼 함수가 종료되어도 소멸될 예정이였던 지역변수 num은 소멸하지 않고 새로운 함수와 함께 새생명을 얻어 살아간다.

 

이게 클로저

  function Closure(){
    let num = 0;
    return function(){
      num++;
      console.log(num);
    }
  }
  
  const newClosure = Closure();

  newClosure(); // 1 출력
  newClosure(); // 2 출력
  newClosure(); // 3 출력
  
  const newClosure2 = Closure();

  newClosure2(); // 1 출력 (새로운 독립된 클로저)
  newClosure2(); // 2 출력