A Developing Developer
Scope & Closure 본문
- Scope
Scope는 변수가 어디에서 선언되었는지에 따라서 해당 변수의 유효 범위가 결정된다. 즉, 변수가 선언된 함수나 블록 스코프에 따라서 변수에 접근할 수 있는 범위가 결정된다.
예를 들어, 함수 안에서 선언된 변수는 해당 함수 내에서만 유효하며 함수 바깥에서는 접근할 수 없다. 또한 중첩된 함수에서는 내부 함수에서 외부 함수의 변수에 접근할 수 있지만, 외부 함수에서 내부 함수의 변수에 접근할 수 없다.
- Closure
Closure는 함수와 해당 함수가 선언된 Scope 와의 관계를 의미한다. 클로저는 함수가 반환된 후에도 해당 함수가 선언된 스코프에 접근할 수 있는 메커니즘을 말한다.
즉, 함수 안에서 선언된 변수는 해당 함수가 반환된 후에도 해당 함수가 선언된 스코프에서 유지될 수 있다. 이러한 클로저는 함수형 프로그래밍에서 매우 유용하게 사용되며, 자바스크립트에서 이를 구현하는 방법 중 하나는 내부 함수를 반환하는 것이다.
예시:
function outer() {
var count = 0;
function inner() {
count++;
console.log(count);
}
return inner;
}
var closureExample = outer();
closureExample(); // 1
closureExample(); // 2
closureExample(); // 3
위 예제에서 outer 함수는 inner 함수를 반환한다. 반환된 inner 함수는 outer 함수 내에서 선언된 count 변수에 접근할 수 있으며, count 변수는 inner 함수가 호출될 때마다 증가한다. 이처럼 inner 함수는 outer 함수의 스코프를 유지하면서 호출될 수 있으므로 클로저라고 부른다.
'개발 상식' 카테고리의 다른 글
Transaction (0) | 2023.02.28 |
---|---|
Redis (0) | 2023.02.27 |
TypeORM 에서 'n + 1 problem' 은 어떻게 해결할까? (0) | 2023.02.21 |
eager 과 lazy loading (0) | 2023.02.21 |
IoC 와 DI (0) | 2023.02.20 |