Gidhub BE Developer

클로저(Closer)

2018-11-13
goodGid

클로저(Closer)란?

  • 클로저는 선언당시에 환경이라고 생각하면 된다.

  • 클로저 개념을 이해하기위해 극단적인 예를 들어보면

  • 만약 함수안에서 값이 1초마다 1씩 증가한다고 할 때

  • 내가 함수를 선언하는 그 순간에 시간이 5초라면

  • 그 함수의 시간은 5초에 머물러있는다.

  • 즉 클로저 개념에 의해 선언 당시의 환경으로 구성되어 있는 것이다.


클로저의 장점

  • a()함수안에 선언된 x값은 a()와 b()에서는 접근이 가능하지만

  • a()함수 밖에서는 접근이 안된다.


  • 그런데 객체지향 프로그래밍에서는 다르다.

  • 외부에서도 자유롭게 접근이 가능해야한다.

  • c라는 변수를 활용하면 외부에서 내부의 변수를 출력할 수 있게 된다.

  • 하지만 외부에서 내부의 값을 변경할 수는 없다.


  • 외부에서 임의로 내부의 값을 바꾸려면

  • 내부함수에서 외부함수에서 바꿀 수 있는 권한(=수단)을 줘야한다.

  • 내부에서 반환을 통해 권한을 주면

  • 외부에서는 그 권한을 통해 값을 변경시킨다.


  • 예제를 통해 동작 흐름을 자세히 알아보자.

  • 1,2번이 호이스팅 작업이다.

  • 또한 익명함수호이스팅의 대상임을 주의하자 !!!


  • 또 다른 예


  • 정리하자면 다음과 같은 장점이 있음을 알 수 있다.


Recommend

Index