Js

[자바스크립트] 클로저 함수

이레의 개발노트 2022. 2. 15. 23:26
728x90
반응형

클로저 함수란?

함수 내부에 만든 지역변수가 사라지지 않고 계속해서 값을 유지하고 있는 상태를 말합니다.

클로저 함수는 일종의 '현상' 이기 때문에 정해진 규칙은 없습니다.

 

⭐️ 예제


         function basic(){
           var count = 0;
           count++;
           
           return count;
         };
         document.write(basic()+'<br>');
		//출력값 : 1

         function closure(){
           var count = 0;
           function countSample(){
              count++;
              return count;
           }
           return countSample;
         }

		 var counter = closure();
		 
         document.write('1, count' + counter(),'<br>');
		 document.write('2, count' + counter(),'<br>');
		 document.write('3, count' + counter(),'<br>');
         //출력값 : 1, count1
		//2, count2
		//3, count3

 

첫번째 함수에서는 basic함수가 호출되면서 count가 0으로 계속 초기화되며 만들어집니다.

그래서 결과값은 항상 1이 됩니다.

 

두번째 함수에서는 closur라는 함수가 호출되면 지역변수 count가 0으로 초기화 되며 만들어지는데, 내부의 countSample함수도 만들어지고, 마지막에  countSample를 리턴하면서 closur함수가 종료됩니다.

변수가 삭제되지 않고 계속 남아있는 현상을 '클로저 함수' 라고 합니다.

728x90
반응형