-
클로저(Closure)Front-end/Javascript 2021. 3. 23. 23:26
클로저,렉시컬스코프, ... 등 뜻을 이해하고 이제 안다고 생각했는데 직접 말하라고하면 항상 어떻게 말해야되는건지 고민하게된다
그말은 즉.. 아직 이해를 못하고 있다는 뜻.. ^^ .. 백번 보다보면 터득할 날이 오겠지 ..
* 클로저는 자바스크립트 고유의 개념은 아니다.
Closures
A closure is the combination of a function bundled together (enclosed) with references to its surrounding state (the lexical environment). In other words, a closure gives you access to an outer function’s scope from an inner function. In JavaScript, closures are created every time a function is created, at function creation time.
(developer.mozilla.org/en-US/docs/Web/JavaScript/Closures)
클로저는 함수가 속한 레시컬 스코프를 기억하여 함수가 렉시컬 스코프 밖에서도 실행도리 때에도 이 스코프에 접근하게 할 수 있는기능이다.
(외부 함수에서 선언된 변수를 참조하는 내부함수가 있을때, 외부함수의 실행 컨텍스트가 종료된 이후에도 외부함수를 호출할수 있는 현상을 클로저라고 한다. )
( = 함수가 생성될 당시의 외부 변수를 기억하고 생성 이후에도 계속 접근이 가능하다 )
반복문과 클로저
for 반복문은 클로저를 설명하는 가장 흔한 사례이다.
*클로저는 return함수뿐만 아니라 외부함수의 변수를 참조하는 함수를 외부에 보낼수있는 setInterval, setTimeout등
다양한 상황에서도 발생할 수 있다.
*클로저는 관리를 잘못하면 메모리 누수가 발생할 수 있기때문에 , 참조 카운트를 0으로 만든다.
*클로저를 사용해 변수의 은닉화가 가능하다.
'Front-end > Javascript' 카테고리의 다른 글
자바스크립트의 호출스택,큐 그리고 이벤트루프 (0) 2021.03.28 실행컨텍스트 (0) 2021.03.27 this 바인딩 (0) 2021.03.23 자바스크립트 객체의 깊은 복사 (0) 2020.05.11 JqxGrid ) 해당 id를 가진 row의 색상을 변경해주는것이 아닌 cell하나에 색상을 적용하기. (0) 2020.05.08