Web Dev/JavaScript :: 자바스크립트

[Javascript] 클로저 closure 이란?

HJPlumtree 2020. 6. 21. 15:20

closure 의 뜻은

폐쇠, 종료를 가지고 있다.

 

자바스크립트를 배우며 closure를 알아야 한다고 듣곤 했다.

그럼 closure란 무엇일까?

 

정의는 이렇다

'함수(function)는 항상 자신 안의 프로퍼티(property), 메소드(method), 변수 등에 접근할 수 있다'

 

 

function Bird() {
  let hatchedEgg = 10; // 밖에서 접근할 수 없는 변수(private variable)

  /* 공개된 메소드 */
  this.getHatchedEggCount = function() { 
    return hatchedEgg;
  };
}
let ducky = new Bird();
ducky.getHatchedEggCount(); // 출력값 10

 

이러식으로 밖에서 접근할 수 없는 것(바꾸지 못하게)에 메소드를 걸어서, closure 방식을 이용해서 보여줄 수 있다.