[ TIL ] 클로저(Closure)란?

JW.LEE·2023년 8월 22일
0

TIL

목록 보기
2/2
post-thumbnail

1. 클로저란?

외부함수가 생성될 때 환경을 기억하는 함수로 내부함수(자식함수)에서 외부함수(부모함수)의 변수를 참조하여 접근이 가능한것을 의미한다.

우선 클로저를 이해하기전에 내부함수와 외부함수의 개념을 간략하게 알아야한다.

내부함수 : 자바스크립트 함수 내 또 다른 함수를 선언할 수 있고 내부함수 자체에서 클로저를 해준다.

// 전역 범위 (global scope)
function makeFunc()  {  // 외부함수(부모함수)
     // 지역 변수
     var name = "Mozilla";

  function displayName() { // 내부함수(자식함수)
    alert(name);
  } 

 /* myFunc변수에 displayName을 리턴함!  
 -> 자바스크립트는 다른 프로그래밍 언어와 다르게 리턴하는 함수가 클로저를 형성한다. */
  return displayName;

} // <- makeFunc() 의 scope(유효범위)

var myFunc = makeFunc(); // 리턴된 displayName 값이 myFunc라는 변수에 할당되겠죠?
myFunc(); // 리턴된 displayName 함수를 실행 (name 변수에 접근)

| 즉, 외부 함수의 실행이 끝나고 소멸된 이후에도 내부함수가 외부함수의 변수를 접근하여 참조 할 수 있다.

profile
프론트엔드 개발 탐험하기

0개의 댓글