Closure(in JavaScript)
클로저란?
- 자신의 상위 스코프에 있는 변수에 접근할 수 있는 함수
- 실제로, 함수가 상위 스코프 변수에 접근할 때, 그 함수는 자동으로 클로저가 된다.
- 일반적인 함수보다 더 많은 메모리와 컴퓨팅을 요구한다.
스코프: 변수의 유효 범위, 변수에 접근할 수 있는 범위
클로저가 아닌 일반 함수의 경우, 변수가 스택 메모리에 저장된다. → 수명이 짧다.
클로저의 경우, 변수가 힙 메모리에 저장된다. → 수명이 길다.
가비지 컬렉터에 의해 나중에 제거되기 때문
클로저의 사용 이유
- 데이터 캡슐화
- 데이터 누수 or 노출을 막기 위해 사용
렉시컬 스코프(or 정적 스코프)란?
- 함수의 상위 스코프를 결정하는 방식
- 함수를 ‘어디서 호출했는지’가 아니라, ‘어디에 선언했는지’에 따라 결정된다.
- 반대로, 동적 스코프는 함수의 호출 위치에 따라 결정된다.
var x = 1;
function foo() {
var x = 10;
bar();
}
function bar() {
console.log(x);
}
foo(); // ?
bar(); // ?
⇒ 전역 변수 x의 값 1을 두 번 출력한다. → JS는 렉시컬 스코프를 따른다.
참고자료
Closures Explained in 100 Seconds // Tricky JavaScript Interview Prep
Author And Source
이 문제에 관하여(Closure(in JavaScript)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jhound/Closurein-JavaScript저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)