👉클로저란?
-자신을 내포하는 함수의 컨텍스트에 접근할 수 있는 함수
-함수가 특정 스코프에 접근할 수 있도록 의도적으로 그 스코프에서 정의하는 것
-함수를 선언할 때 만들어지는 유효범위가 사라진 후에도 호출할 수 있는 함수
-생명주기상 끝난 외부 함수의 변수를 참조하는 함수
-자유변수가 있는 함수와 자유변수를 알 수 있는 환경의 결합
-로컬 변수를 참조하고 있는 함수 내의 함수
-자신이 생성될 때의 스코프에서 알 수 있었던 변수들 중 언젠가 자신이 실행 될 때 사용할 변수들만을 기억하여 유지시키는 함수
어떤 함수에서 선언한 변수를 참조하는 내부 함수에서만 발생하는 현상
어떤 함수 A에서 선언한 변수 a를 참조하는 내부함수 B를 외부로 전달할 경우 A의 실행 컨텍스트가 종료된 이후에도 변수 a가 사라지지 ㅏ않음
외부함수 내에 선언된 함수가 외부함수의 변수를 참조하고 있는 경우,
외부함수의 생명주기가 종료가 되어도 외부함수의 변수를 참조할 수 있는 현상
외부함수의 변수가 참조되기 때문에 가비지 콜렉팅의 대상에서 제외됨.
var outer = function () {
var a = 1;
var inner = function () {
return ++a;
};
return inner;
}
var outer2 = outer();
console.log(outer2());
console.log(outer2());
👉가비지 콜렉터란?
메모리 공간을 주기적으로 검사하여 참조하고 있지 않은 변수를 수집하여 메모리를 해제함
어떤 값을 참조하는 변수가 하나라도있다면 그 값은 가비지 콜렉터의 수집 대상이 되지 않음
👉매니지드와 언매니지드 언어
가비지 콜렉터를 자동으로 수행하고 있는 언어가 매니지드
개발자의 직접적인 메모리 접근이 허용되지 않음
언매니지드는 개발자가 일일이 가비지 콜렉터를 작동하여야 메모리 누수가 일어나지 않음
'TIL' 카테고리의 다른 글
결합도와 응집도 (0) | 2024.06.18 |
---|---|
코어자바스크립트 chapter 6 (1) | 2024.06.03 |
코어자바스크립트 chapter 4 예상 질문 정리 (0) | 2024.05.27 |
코어자바스크립트 chapter 3 (0) | 2024.05.26 |
TIL : React fiber (0) | 2024.05.21 |