본문 바로가기
부트캠프교육중/JavaScript

[JavaScript] 클로저

by 뭉지야 2023. 1. 2.
728x90

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

클로저함수: 외부함수의 변수에 접근할수 있는 내부함수


★★★★★

클로저함수: 외부함수의 컨텍스트에 접근할수 있는 내부함수

함수내에서 다른함수(내부함수)가 리턴이 되면 이 함수를 클로저함수라고 부르고 외부함수에 있는 변수에 접근 가능하구나!!!

 

let add = function(x) {
	let sum = function(y) {
    return x+y;
    }
return sum;
}

add: 클로저함수

sum: 그 주변 뭔가

 

클로저: 주변에 있는 문자까지 기억한다는 의미로 생각하면 된다


<클로저함수의 특징>
1. 함수를 리턴하는 함수이다.
함수를리턴하는함수 그림 추가!!!
어휘적환경: 변수 및 함수 선언의 형태

2. 내부함수는 외부함수에 선언된 변수에 접근 가능하다
*클로저는 리턴하는 함수에 의해 스코프(변수의 접근범위)가 구분된다.
클로저의 핵심은 스코프를 이용해서 변수의 접근범위를 닫는(폐쇄)데에 있다.
-외부함수는 내부함수의 변수에 접근이 불가능하다. (바깥스코프에서는 안쪽스코프 접근 불가)
-내부함수는 외부함수의 변수에 접근이 가능하다. (바깥스코프에서 선언한 변수 접근 가능)

 

<클로저의 활용>
1. 데이터를 보존하는 함수
-일반적인 함수는 함수 실행이 끝나고 나면 함수 내부의 변수를 사용할수 없다.
클로저는 외부 함수의 실행이 끝나더라도, 외부 함수 내 변수를 사용할수 있다.
-특정 데이터를 스코프 안에 가두어 둔채로 계속 사용할수 있게 해준다.


2. 정보의 접근 제한(캡슐화)
클로저를 통해 불필요한 전역변수 사용을 줄이고, 스코프를 이용해 값을 보다 안전하게 다룰수 있다.

3. 모듈화
-재활용이 가능하다
-함수 재사용성을 극대화하여, 함수 하나를 완전히 독립적인 부품 형태로 분리하는 것을 모듈화라고 한다.
클로저를 통해 데이터와 메서드를 같이 묶어서 다룰수 있다.
즉, 클로저는 모듈화에 유리하다.

변수 value는 직접 수정하는 것이 불가능하고, 리턴하는 객체가 제공하는 메서드를 통해서만 조작이 가능하다.

 

728x90