closure

박현석·2022년 9월 3일
1

Javascript ES6+

목록 보기
84/88
const text = 'hello';
function func() {
  console.log(text);
}
func();

function outer() {
  const x = 0;
  function inner() {
    console.log(`inside inner: ${x}`);
  }
  return inner;
}
const func1 = outer();
func1();
----------------------------------------------------------------------
// 내부 정보를 은닉하고, 공개 함수(public, 외부)를 통한 데이터 조작을 위해
// 캡슐화와 정보은닉
// 클래스 private 필드 또는 메소드를 사용하는 효과와 동일!
function makeCounter() {
  let count = 0;
  function increase() {
    count++;
    console.log(count);
  }
  return increase;
}
const increase = makeCounter();
increase();
increase();
increase();

class Counter {
  #count = 0;
  increase() {
    this.#count++;
    console.log(this.#count);
  }
}
const counter = new Counter();
counter.increase();
  • 중첩된 함수에서 내부에 있는 함수와 그리고 외부에 있는 상태 렉시컬 환경이 저장 되어 있기 때문에 내부 환경에서 외부 환경 데이터에 접근 할 수 있는 것
profile
선한 영향력을 주는 사람

0개의 댓글