제로부터 쌓는 개발일지
article thumbnail
Published 2023. 10. 31. 16:40
자바스크립트 클로저 backend/JavaScript
반응형

클로저

  • 내부 함수와 내부 함수
    함수 안에 또 다른 함수(내부 함수)가 정의된 경우에 발생
    내부 함수가 외부 함수에 대한 참조를 가지는 경우, 클로저라고 함
  • 변수 유지
    클로저를 통해 내부 함수는 외부 함수의 변수를 참조
    클로저가 함수를 정의할 때의 스코프에 있는 변수를 참조한다는 의미
  • 렉시컬 스코프
    클로저는 렉시컬 스코프(정적 스코프)를 따름
    클로저가 함수를 정의할 때의 스코프에 있는 변수를 참조한다는 의미

 

클로저의 활용

  • 데이터 은닉
    클로저를 사용하면 변수를 외부에서 접근하지 못하게 하고, 변수에 접근하려면 클로저 내부 함수를 통해 접근해야 됨
    데이터 은닉 및 정보은닉을 구현할 수 있음
  • 콜백 함수
    클로저를 사용하여 콜백함수를 구현하거나 비동기 작업을 처리할 수 있음
    클로저를 이용해 외부 범위의 상태를 유지하면 비동기 작업에서 필요한 데이터를 전달할 수 있음
  • 모듈 패턴
    클로저를 활용하여 모듈 패턴을 구현할 수 있음
    모듈 패턴은 프라이빗 변수와 메서드를 가진 객체를 생성하는 방법
// innerFunction은 outerFunction내에서 정의되었지만,
// outerVariable에 대한 참조를 유지하고 있기 때문에 외부에서 호출할 때도 outerVariable 값을 사용할 수 있음

function outerFunction() {
  let outerVariable = "I am from the outer function";

  function innerFunction() {
    console.log(outerVariable); // outerVariable은 클로저에 의해 유지됨
  }

  return innerFunction;
}

const closure = outerFunction(); // innerFunction이 반환됨
closure(); // 출력: "I am from the outer function"
반응형

'backend > JavaScript' 카테고리의 다른 글

JavaScript 문법 핵심 요약  (1) 2023.10.31
자바스크립트 Class  (0) 2023.10.31
자바스크립트 DOM  (0) 2023.10.31
자바스크립트 콜백함수 & 동기/비동기 처리  (0) 2023.10.23
자바스크립트 this 바인딩  (0) 2023.10.22
profile

제로부터 쌓는 개발일지

@PachyuChepe

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...