A Developing Developer

Scope & Closure 본문

개발 상식

Scope & Closure

H-JJOO 2023. 2. 23. 14:52
  • 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