From c0915fe2a1920087903f797ad165f03b63d247c5 Mon Sep 17 00:00:00 2001 From: ganeodolu Date: Tue, 26 Oct 2021 20:55:46 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=ED=81=B4=EB=A1=9C=EC=A0=80=20=EB=82=B4?= =?UTF-8?q?=EC=9A=A9=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- JS/closure.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 JS/closure.md diff --git a/JS/closure.md b/JS/closure.md new file mode 100644 index 0000000..eb91115 --- /dev/null +++ b/JS/closure.md @@ -0,0 +1,27 @@ +# 클로저 + +- 결론 + - 외부함수보다 내부함수가 더 오래 유지될 때 내부함수는 생명주기가 종료한 외부함수의 변수를 참조할 수 있는데 이 내부함수를 클로저라고 부름 +- 설명 + - 상위스코프에 대한 참조는 함수가 실행된 위치가 아니라 **함수가 정의된 위치**에 의해 결정(렉시컬 스코프) + - 중첩함수가 상위 스코프의 식별자를 참조하고 있고 중첩 함수가 외부 함수보다 더 오래 유지되는 경우에 한정하는 것이 일반적임 + - 상태가 의도치 않게 변경되지 않도록 안전하게 은닉하고 특정 함수에게만 상태 변경을 허용하여 상태를 안전하게 변경하고 유지하기 위해 사용 + + ```jsx + const x = 1; + + function outerFunc(){ + const x = 10; + function innerFunc(){ + console.log(x); // 10 + } + innerFunc(); + } + + outerFunc(); + ``` + +- 요약 + - 내부함수에서 생명주기가 끝난 외부함수의 변수를 참조할 수 있는 내부함수 +- 참고 + - 모던 자바스크립트 Deep Dive