자바스크립트 중급 강좌 (클로저)

히대·2023년 12월 17일

Javascript

목록 보기
21/28

클로저(Closure)

어휘적 환경(Lexical Environment)

함수가 호출되는 동안 내부와 외부에서 받은 전역 Lexical 환경을 가짐
내부는 외부를 참조하고
내부 안에 없으면 외부 -> 전역 으로 범위를 넓혀 참조하게됨

function makeAdder(x){
	return function(y){ * y를 가지고있고 상위함수인 makeAdder의 x에 접근 가능
    	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

Closure
클로저는 함수와 그 함수의 렉시컬 환경의 조합
함수가 생성될 당시의 외부변수를 기억하고
생성된 이후에도 계속 접근 가능

function makeCounter() { * 외부함수
	let num = 0; * 은닉화
    
    return function () { * 내부함수
    	return num++; 
    };
}

let counter = makeCounter();

console.log(counter()); -> 1 * 숫자들은 수정 불가
console.log(counter()); -> 2
console.log(counter()); -> 3
profile
아자아자 파이팅🔥

0개의 댓글