<aside> ❓

클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다.

</aside>

const x = 1;

function outerFunc() {
	const x = 10;
	
	function innerFunc() { // outerFunc의 x 변수에 접근 가능
		console.log(x); // 10
	}
	
	innerFunc();
}

outerFunc();

const x = 1;

function outerFunc() {
	const x = 10;	
	innerFunc();
}

function innerFunc() {
	console.log(x); // 1
}

outerFunc();

렉시컬 스코프 (정적 스코프)

const x = 1;

function foo() {
	const x = 10;
	bar();
}

function bar() {
	console.log(x);
}

foo(); // 1
bar(); // 1

함수 객체의 내부 슬롯 [[Environment]]

클로저와 렉시컬 환경

클로저의 활용