클로저(Closure)

Jayden ·2023년 3월 11일
0

1. 클로저

함수를 일급 객체로 취급하는 함수형 프로그래밍 언어(Haskell, Lisp, Erlang, Scala 등) 사용되는 특성입니다.


const x = 1;

function outerFunc() {
   const x = 10;


	function innerFunc() {  	
		console.log(x); 10
	}

	innerFunc();
  
}

outerFunc();

outerFunc 함수 내부에서 중첩 함수 innerFunc가 정의되고 호출되었습니다. 중첩 함수 innerFunc()의 상위 스코프는 외부 함수 outerFunc의 스코프입니다. 따라서 중첩 함수 innerFunc 내부에서 자신을 포함하고 있는 외부 함수 outerFunce의 x 변숭 접근 할 수 있습니다.

하지만, innerFunc()가 중첩함수가 아닌, outerFunc() 외부에 선언 되면, outerFunc 함수 내부에서 호출하여도 outerFunce() 함수의 변수에 접근을 할 수 없습니다.

const x = 1;

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

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

outerFunc();
profile
J-SONE 프론트엔드 개발자

0개의 댓글