자바스크립트의 클로저(Closure)

June Lee·2021년 3월 10일

JavaScript

목록 보기
2/11

클로저

클로저는 함수 안에 또 다른 함수를 선언할 때, 두 함수의 유효 범위(로컬 영역, 글로벌 영역)가 맞물리면서 부모함수로부터 반환된 후에도 부모함수의 유효범위에 여전히 접근할 수 있는 것을 의미한다.(자식 함수의 전역 = 부모 함수의 로컬이므로)

function outerFunc(){
	let x = 10;
  
  let innerFunc = function(){
    console.log(x);
  }
  
  return innerFunc;
}

var returnedValue = outerFunc();
returnedValue();

위와 같은 함수가 있을 때 outerFunc의 실행 컨텍스트 안에 포함되는 변수 x는 outerFunc() 밖에서는 남아있을 수 없어야 하지만, outerFunc 안에서 정의된 innerFunc 함수를 리턴했고, innerFunc 안에서 해당 변수 x를 참조하고 있기 때문에, 변수 x는 innerFunc이 남아있는 한 계속 사용할 수 있게 된다.

다음과 같은 활용도 가능하다.

function outer(arg1, arg2){
  var localVar = 8;

  function inner(innerArg){
    console.log((arg1 + arg2) / (innerArg + localVar));
  }

  return inner;
}

outer(16, 14)(2);

profile
📝 dev wiki

0개의 댓글