(JS) Closures

Mirrer·2022년 5월 3일
0

JavaScript

목록 보기
21/24
post-thumbnail

Closures

클로저는 주변 상태에 대한 참조와 함께 묶인 기능의 조합

클로저(Closures)는 함수와 그 외부를 둘러싸고 있는 렉시컬환경의 조합이다.

즉 내부함수에서 외부함수에 있는 상태에 접근할 수 있는 권한을 주는 것을 뜻한다.


클로저 예제

기본적으로 내부함수는 외부함수 정보에 접근 가능하다.

function outer() {
  const x = 0;
  function inner() {
    console.log(`inside inner: ${x}`);
  }
  inner();
}

outer(); // inside inner: 0

이 때 만약 내부함수가 외부함수를 참조한 함수를 return하면 참조하고 있는 렉시컬환경도 같이 반환된다.

function outer() {
  const x = 0;
  function inner() {
    console.log(`inside inner: ${x}`);
  }
  return inner;
}

const func1 = outer();
func1(); // inside inner: 0


클로저의 역활

클러저는 내부 정보를 은닉하고, 공개 함수(Public, 외부)를 통한 데이터 조작을 위해 사용된다.

이를 캡슐화 또는 정보은닉이라고 한다.

클래스는 private 필드 또는 메소드를 사용하여 캡슐화, 정보은닉을 구현한다.

// count변수는 외부에서 접근 X
// 오로지 increase를 통해서만 접근
function makeCounter() {
  let count = 0;
  function increase() {
    count++;
    console.log(count);
  }
  return increase;
}

const increase = makeCounter(); 
increase(); // 1
increase(); // 2
increase(); // 3

참고 자료

Closures - JavaScript | MDN - Mozilla
모던 자바스크립트 Deep Dive
모던 JavaScript 튜토리얼

profile
memories Of A front-end web developer

0개의 댓글