🔍
Javascript Closure(클로저)
November 29, 2021
Javscript Closure(클로저)란?
독립적인 변수를 가리키는 함수
클로저의 원리
함수A가 존재하고, 함수 A에서 선언된 1이라는 변수가 존재, 또한 함수 A 내부에 B라는 내부함수가 존재하고 B라는 내부함수에서 A함수에서 선언된 1이라는 변수를 참조, 이때 내부함수 B가 외부로 전달될 경우, A의 실행이 종료되어도 변수 1이 사라지지 않는다.
~~A의 실행이 종료되어도 변수 1이 사라지지 않는다 -> 사이드 이펙트
실행이 종료되어도 사라지지 않는다는 것은 메모리에 계속 남아있음을 뜻하고 이는 메모리 누수 현상이 발생할 수 있음을 뜻함
또한 메모리에 계속 남아있기에 필요에 의해 참조가 가능
메모리 누수란?
프로그램이 필요하지 않은 메모리를 계속 점유하고 있는 현상
클로저를 사용하는 이유
-
불필요한 전역변수의 선언을 막아준다.
-
private 변수를 사용하고 싶을 때 이용된다.
클로저 사용의 단점
-
메모리 누수 현상이 발생할 수 있다.
-
새로운 Scope를 생성하여 내부 함수에 링크시키기에, function 자체의 스코프가 종료되기까지 내부함수가 메모리에 남아있어 퍼포먼스 손해 감수
-> 내부 함수에 링크시키기 때문에, function 자체의 스코프가 종료되기까지 내부함수가 메모리에 남아있어 퍼포먼스 손해 감수