개발 일기

클로저의 개념 본문

JavaScript

클로저의 개념

ji_su_04 2024. 7. 15. 11:34

클로저란?

 

클로저란 폐쇄라는 뜻을 가지고 있다.

함수가 선언될 그 당시에 주변의 환경과 함께 갇히는 것을 의미하는데 함수가 속한 렉시컬 스코프를 기억하며, 함수가 렉시컬 스코프 밖에서 실행될 때도 이 스코프에 접근할 수 있게 해주는 기능을 가지고 있다.

 

렉스컬 스코프란 함수가 선언이 되는 위치에 따라서 상위 스코프가 결정되는 스코프이다.

 

즉, 클로저는 내부함수는 외부함수의 지역변수에 접근할 수 있는데 외부함수의 실행이 끝나서 외부함수가 소멸된 이후에도 내부함수가 외부함수의 변수에 접근할 수 있음을 의미한다.

 

function sayHello () {
  const a = 'Hello';
  const b = 'World';
  
  function sumString () {
    console.log(a + ' ' + b);
  }
  
  return sumString;
}

const myFunc = sayHello();

myFunc(); // 'Hello World'

 

예제 코드를 보면 myFunc라는 변수는 sayHello 함수를 실행하고 있다.

이때 myFunc은 a, b 변수가 담겨있는 sayHello 함수 스코프 바깥에 있음에도 a와 b를 합친 결과 값을 정상적으로 출력하고 있다.

 

이는 바로 클로저 떄문이며 자바스크립트 함수가 선언될 당시에 클로저가 형성되어 주변 환경, 즉 렉시컬 스코프를 기억할 수 있게 해준다.

 

반응형

'JavaScript' 카테고리의 다른 글

Method란?  (0) 2023.02.03