클로저는 내부함수가 자신이 속해있는외부함수의 변수등을 가져와 사용하는걸 말합니다.
이렇게 말해서는 이해가 안가기도 하는데요, 간단한 예제와 함께 설명드리겠습니다.
outFunc가 외부함수, 그 안에있는 inFunc함수가 내부함수입니다.
여기서 내부에있는 inFunc가 실행될떄 외부함수인 outFunc의 변수인 a를 출력하는데요
이런식으로 내부함수는 외부함수의 변수를 가져와 사용할수있습니다. 간단하죠?
물론 이게 클로저의 끝은 아닙니다.
클로저는 외부함수의 실행이 끝났어도 내부함수를 통해 외부함수의 변수등에 계속 접근할수있습니다.
이번에도 예제와 함께 설명드릴게요.
이런식으로 리턴으로 내부함수를 받아놓으면 외부함수가 종료된 후에도 외부함수의 변수에 접근할수 있는것입니다.
아래는 활용 예시들을 보여드릴게요.
외부함수를 한번만 호출해 count를 초기화해준뒤 내부함수를 받아 카운팅하는 코드입니다.
이런식으로 한번만 인자를 받아야될때에도 클로저를 사용할수있습니다.
마지막으로는 함수를 객체에 담아 반환해서
다른 언어에서의 private public키워드와 비슷하게 사용하는방법입니다.
제가 설명할 내용은 여기까지가 끝입니다. 이해가 잘 되셨으면 좋겠네요!
여러분도 앞으로 클로저를 유용하게 활용하시서 좋은 코드를 만드실수 있길 바라겠습니다
'JavaScript > VanillaJS' 카테고리의 다른 글
module.exports JS (0) | 2020.08.27 |
---|---|
ES6 화살표함수 (0) | 2020.08.09 |
ES6 const,let 비구조화할당 템플릿문자열 (0) | 2020.08.08 |