본문 바로가기
Co-Study/JS 스터디 2021 ✔️

[JS 스터디 1기] - 여섯 번째 미팅

by Aaron-Kim 2022. 1. 9.

2022.01.09.일

 

오늘 JS 스터디 여섯 번째 미팅을 했습니다.

 

이번 주차 마지막 개념인 클로저에 대해 다뤘습니다.

 

'클로저'는 보통 MDN 문서에 '함수와 그 함수가 선언된 렉시컬 환경과의 조합이다' 라고 나와 있습니다.

 

사실 말은 어렵지만 실행 컨텍스트를 그릴 수 있으면 쉽게 이해가 됩니다.

 

코드 실행 흐름을 관리하는 실행 컨텍스트 스택에서 그 실행 컨텍스트에 대한 코드 실행이 종료되면

 

콜 스택(실행 컨텍스트 스택)에서 Pop이 이뤄지는데 그 실행 컨텍스트만 Pop 되지 렉시컬 환경까지

 

모두 바로 사라지지 않습니다. 다른 곳에서 그 렉시컬 환경에 있는 식별자를 참조하게 된다면

 

그것은 생명 주기가 계속 유지되는데 사실 이 부분만 알고 있어도 클로저는 쉽게 이해할 수 있습니다.

 

결국 핵심은 실행 컨텍스트를 그릴 수 있고 이해하는 것입니다.

 

그러면 마치 제가 JS 엔진이 된 것처럼 코드를 평가하고 실행할 수 있는 시야가 보입니다.

 

그리고 클로저를 활용하는 이유인 정보 은닉성

 

private한 변수에 대한 상태를 안전하게 관리하는 을 함께 공유했습니다.

 

이후 시간이 남아서 전반적으로 생성자 함수와 인스턴스에 대한 프로토타입의 두 갈래로 나뉘는 개념을

 

그림으로 도식화해서 정리하였고, 이러한 어려움으로 인해 ES6부터 클래스 개념이 도입된 것을 설명했습니다.

 

마지막으로는 제가 정말 공유하고 싶었던 함수형 프로그래밍의 대표적 특징인 함수 커링와 합성에 대한 내용을

 

간단한 예시 코드와 함께 설명하면서 compose (함수 합성) 함수를 ES6/ES Next 버전으로 구현했습니다.

 

ES5 버전으로 rest parameter (나머지 매개변수)나 Object.assign() 함수 등 사용하지 않고

 

순수하게 과거 버전으로는 어떻게 하면 compose 함수를 구현할 수 있을지 약간의 과제를 내드리고 마쳤습니다.

 

간단하게 요약식으로 글을 작성해서 제가 앞서 말씀드린 것이 이해가 되지 않을 수 있습니다.

 

이와 관련된 자세한 내용은 토픽 키워드 카테고리에 제가 추가적으로 글을 잘 정리해서 게시하겠습니다.

 

이번 주차로 드디어 자바스크립트 기본의 60% 정도를 끝냈습니다.

 

앞으로는 여러 최신 자바스크립트 문법이나 표준 빌트인 객체의 메서드, DOM/Event, Rest/Spread operator 등에 대해

간단히 정리할 예정이고

 

가장 중요한 비동기 부분이 남았습니다.

 

이번주 다들 정말 수고 많으셨고 앞으로 끝까지 함께 잘 스터디를 마쳤으면 좋겠습니다.

 

부족한 제 설명을 들어주시고 수업에 열심히 참여해주신 스터디원 두 분께 감사의 말씀을 드립니다.

 

 

반응형

댓글