Day71 - [js]클로저

2021. 5. 27. 20:39Java Script

이번에는 java script 의 클로저 에 대해서 알아 봅시다.

 

클로저

var 변수는 함수단위 스코프를 가지고 있기 때문에, 함수 내에서 선언 및 초기화 된 변수는 함수 바깥에서 사용하지 못한다고 했습니다.

 

그렇기 때문에, 함수 바깥에서 함수 안에 선언된 var a 를 사용하지 못하는데, 이러한 a 를 사용할 수 있도록 해주는 것이 클로저 입니다.

 

클로저는, 함수 내에 또 함수를 만들어서 a에 접근하는 것을 의미 합니다.

※ java script의 함수는 실행환경의 상태를 기억 합니다.

내부 익명 함수가 외부함수 method()의 값을 바꿀수 있는(접근할 수 있는) 키를 가지고 있습니다.

 

외부함수 밖에서 내부함수가 호출되더라도 외부함수에 있는 지역변수 a에 접근가능한데, 이런 반환함수를 클로저라고 합니다.

 

method() 가 끝나는 순간 var a의 값은 사라지게 됩니다.

하지만, method() 안에 있는 "리턴값이 있는 익명함수(클로저)" 는 var b 에 저장이 되고, a값이 사라지더라도 b 를 실행하게 되면 a의 값을 확인 할 수 있습니다.

이런 클로저 를 이용해서, getter 와 setter 를 만들 수 있습니다.

 

아래는 setter 입니다.