클로저

이건우·2022년 4월 4일
0

JavaScript

목록 보기
3/4

클로저

자바스크립트는 어휘적 환경을 갖는다. (lexical environment)

먼저 '렉시컬' 이란 어휘적 범위 지정과정에서 변수가 어디에서 사용 가능한지 알기 위해 그 변수 소스코드내 어디에서 선언되었는지, 고려한다는것을 의미하는것입니다.

함수와 렉시컬 환경의 조합이 클로저 입니다.

함수가 생성될 당시의 외부변수를 기억 생성이후에도 계속 접근 가능합니다. 외부함수보다 중첩함수가 더 유지되는 경우 중첩함수는 이미 생명주기가 종료한 외부함수의 변수를 참조할 수있습니다. 이러한 중첩함수라 할 수있습니다.

function makeAdder(x){
	return function(y){
	return x + y;
	}
}

const add3 = makeAdder(3); 
console.log(add3(2)); // 5

// add3 함수가 생성된후 상위함수인 makeAdder의 x에 접근가능함.

const add10 = makeAdder(10);
console.log(add10(5)); // 15
console.log(add3(1)); // 4

클로저를 함으로써 의도치않게 변경되지 않도록 안전하게 은닉하고 특정함수에게만 상태변경을 허용하여 상태를 안전하게 변경하고 유지할 수 있습니다.

또 부수효과를 최대한 억제하여 오류를 피하고 프로그램의 안정성을 높이기위해 클로저를 적극 사용합니다.

profile
내가 느낌만알고 한줄도 설명할줄 모른다면 '모르는 것'이다.

0개의 댓글