JavaScript #8

날림·2021년 9월 6일

js/node

목록 보기
9/25

클로저 (closer)

  • MDN 기준

함수와 함수가 선언된 어휘적(lexical) 환경의 조합을 말한다. 이 환경은 클로저가 생성된 시점의 유효 범위 내에 있는 모든 지역 변수로 구성된다

"함수가 선언"어휘적(lexical) 환경??

외부함수의 변수에 접근할 수 있는 내부함수

??????

머릿속에 잘 들어오지 않지만 일단 정리해봅니다


클로저의 특징

  • 특징 1.

함수를 리턴하는 함수

그림의 adder(5) 자체로 함수
이를 풀어서 쓰면

클로저 함수 기본 형태

클로저 함수는 위와 비슷한 모양을 갖는다

함수를 리턴하는 함수

  • 특징 2.

스코프 구분

리턴하는 함수에 의해 스코프(변수의 접근 범위) 구분

  • 변수가 선언된 곳이 중요

클로저 변수 범위

외부 함수내부 변수 y에 접근 불가능
내부 함수외부 변수 x에 접근 가능


클로저의 활용

  • 데이터를 보존하는 함수

데이터 보존 함수

이건 뭐하러 만들었나 싶지만...

클로저 태그 붙이기

전달받은 인자를 저장해두고
그 인자를 비슷한 방법으로 계속 사용하는
함수를 만들어낸다

클로저 모듈 패턴

  • 대표적인 예시

클로저 모듈 패턴

리턴하는 것이 함수(메소드)가 여러 개객체

클로저 모듈 패턴1

내부 변수 값을 직접 수정할 수 없다
리턴하는 객체의 함수(메소드)를 이용해 간접적으로 수정 가능

  • 불필요한 전역 변수를 없애고
  • 값을 보다 안전하게 다룬다

재활용 가능

모듈화

리턴된 객체는 변수를 각자 독립적으로 가진다

함수 하나를 완전히 독립적인 부품 형태로 분리 = 모듈화
클로저로 데이터와 메소드를 같이 묶어서 다룰 수 있다

=> 모듈화에 유리하다


그림 출처 : codestates

profile
항상배우기

0개의 댓글