Javscript Closure(클로저)란?

독립적인 변수를 가리키는 함수

클로저의 원리

함수A가 존재하고, 함수 A에서 선언된 1이라는 변수가 존재, 또한 함수 A 내부에 B라는 내부함수가 존재하고 B라는 내부함수에서 A함수에서 선언된 1이라는 변수를 참조, 이때 내부함수 B가 외부로 전달될 경우, A의 실행이 종료되어도 변수 1이 사라지지 않는다.

~~A의 실행이 종료되어도 변수 1이 사라지지 않는다 -> 사이드 이펙트

실행이 종료되어도 사라지지 않는다는 것은 메모리에 계속 남아있음을 뜻하고 이는 메모리 누수 현상이 발생할 수 있음을 뜻함
또한 메모리에 계속 남아있기에 필요에 의해 참조가 가능

메모리 누수란?

프로그램이 필요하지 않은 메모리를 계속 점유하고 있는 현상

클로저를 사용하는 이유

  1. 불필요한 전역변수의 선언을 막아준다.

  2. private 변수를 사용하고 싶을 때 이용된다.

클로저 사용의 단점

  1. 메모리 누수 현상이 발생할 수 있다.

  2. 새로운 Scope를 생성하여 내부 함수에 링크시키기에, function 자체의 스코프가 종료되기까지 내부함수가 메모리에 남아있어 퍼포먼스 손해 감수

-> 내부 함수에 링크시키기 때문에, function 자체의 스코프가 종료되기까지 내부함수가 메모리에 남아있어 퍼포먼스 손해 감수