JS 개념정리는 자바스크립트 개념을 공부한 내용을
제가 이해한 언어로 단순 정리 & 예제 확인하는 포스팅입니다.
실제로 사용되는 용어와 차이가 있을 수 있습니다.
반대 개념은 disclose
자바스크립트의 클로저란, 함수가 선언될 당시의 주변 환경(Lexical Environment)이 함께 영원히 박제 & 모니터링함 :)
함수의 실행 시점과는 관계 없음!!( this와 반대)
🏳 함수가 실행되는 위치나 시점과는 관계없이, 자바스크립트에서 모든 함수는 선언되는 주변 환경을 기억함.
예2)
veggie()에서 보듯이 환경정보를 계속 추적해서!
변경사항를 추적해서 referencing 하고 영향을 줌
계속 지.켜.본.다.
😺클로저는 생성 당시의! lexical만 담는 게 아니고
live referencing 함
예3)
addCurry 함수 리턴값 => 함수를 생성해서 리턴함//
add 함수가 생성될 때 상위스코프의 x 값이 closure 정보.
return x + y 하면 5_5
예4)
addfive와 result는 각자 클로저(생성될때 저장한) x에 대한 정보가 다름!
result1과 resut3은 각 각 독립적이고 서로 영향주지 않음.
클로저는 가비지 컬렉션 대상 아님,(생성된 함수가 주변 환경을 지속적으로 사용할 수 있기 때문에)
클로저는 메모리 관련 이슈에서!! 이유가 되기 쉬움
들여다봐야 할 경우에는!
메모리공간
힙스냅샵(메모리 공간)을 오른쪽 상단 동그라미를 누르면 클로져 자세히 볼 수 있고..peformance 정보와 함께 보면서 개선해볼...
수 있지만
but 성능이 예민한 상황이나 내 앱이 심하게 버벅거리지 않으면
그닥 신경쓰지 말기