77MDN에서는 클로저에 대해 아래와 같이 정의내린다.
88> 클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다.
99
10+
11+ <font color =' tomato ' >렉시컬 스코프 = 정적 스코프</font >
12+
13+ <br >
14+
15+
16+
17+
1018<br >
1119
12- 여기서 가지고 가야 할 핵심 키워드는 <font color =' orange ' >"함수가 선언된 렉시컬 환경"</font >이다.
20+ 핵심 키워드는 <font color =' orange ' >"함수가 선언된 렉시컬 환경"</font >이다.
1321
1422``` js
1523const x = 1 ;
7381"실행 컨텍스트"에서 확인한 내용과 같이,
7482스코프의 실체는 실행 컨텍스트의 렉시컬 환경이다.
7583
76- <font color'orange'>이 렉시컬 환경은 "외부 렉시컬 환경에 대한 참조"를 통해 상위 렉시컬 환경과 연결된다.</font >
84+ <font color = ' orange ' >이 렉시컬 환경은 "외부 렉시컬 환경에 대한 참조"를 통해 상위 렉시컬 환경과 연결된다.</font >
7785이것이 스코프 체인이다.
7886
7987<br >
@@ -126,7 +134,7 @@ function outer() {
126134
127135// outer 함수를 호출하면 중첩 함수 inner를 반환한다.
128136// 그리고 outer 함수의 실행 컨텍스트는 실행 컨텍스트 스택에서 pop되어 제거된다.
129- coust innerFunc = outer ();
137+ const innerFunc = outer ();
130138innerFunc (); // 10
131139```
132140
@@ -137,7 +145,7 @@ innerFunc(); // 10
137145
138146이때 ` outer ` 함수의 지역 변수 ` x ` 와 변수 10을 저장하고 있던 ` outer ` 함수의 실행 컨텍스트가 제거되었으므로 ` outer ` 함수의 지역 변수 ` x ` 또한 생명 주기를 마감한다.
139147
140- 따라서 ` outer ` 함수의 지경 변수 ` x ` 는 더이상 유효하지 않아 보인다.
148+ 따라서 ` outer ` 함수의 지역 변수 ` x ` 는 더이상 유효하지 않아 보인다.
141149
142150<br >
143151
@@ -190,7 +198,7 @@ console.log(increase()); // 3
190198따라서 카운트 상태(num 변수의 값)를 안전하게 변경하고 유지하기 위해서는
191199` increase ` 함수만이 ` num ` 변수를 참조하고 변경할 수 있게 하는 것이 바람직하다.
192200
193- 이를 위해 변수 ` num ` 을 ` increase ` 함수의 지역 변수로 바꾸어 의도치 않은 상태 변수를 방지해해보도록 하자.
201+ 이를 위해 변수 ` num ` 을 ` increase ` 함수의 지역 변수로 바꾸어 의도치 않은 상태 변경을 방지해보도록 하자.
194202
195203``` js
196204const increase = function () {
@@ -313,7 +321,7 @@ console.log(decreaser()); // -2
313321
314322<br ><br >
315323
316- ### 캡슐화와 정보 은닉
324+ ### 캡슐화와 정보 은닉 (얘가 핵심)
317325대부분의 객체 지향 프로그래밍 언어는 클래스를 정의하고 그 클래스를 구성하는 맴버에 대해
318326` public ` , ` private ` , ` protected ` 등의 접근 제한자를 사용하여 공개 범위를 제한할 수 있다.
319327
0 commit comments