본문 바로가기
JavaScript

[JavaScript]클로저(closure)

by eddypark 2023. 10. 18.

(1) 클로저란

- 자신을 포함하고 있는 외부함수보다 내부함수가 더 오래 유지되는 경우, 외부 함수 밖에서 내부함수가 호출되더라도 외부함수의 지역 변수에 접근할 수 있는 함수를 클로저라 한다.

- 간단히 말해 자신이 생성될 때의 환경을 기억하는 함수라고 말할 수 있다.

function outer(){
  var name = 'wangi';
  console.log(name)
  return function inner(){       
    const age = 26
    console.log(age, name)    // outer함수가 끝났음에도 불구하고 접근 가능
  }
}
var a = outer()               // wangi
a()                           // 26wangi

(2) 특징

- 클로저는 객체의 메서드에서도 사용할 수 있다.

- 동일한 외부함수 안에서 만들어진 내부함수나 메서드는 외부함수의 지역변수를 공유한다.

- 클로저를 이용해 private 한 속성을 가질 수 있다.

function name(a){
  return {                   // 외부 함수 끝. 내부 함수 시작
      get: function (){
          return a;
      },
      set : function(b){
          a = b
      }
  }
}
var name1 = name('wangi');
var name2 = name('eddy');

console.log(name1 .get());   // wangi
console.log(name2 .get());   // eddy

name1.set('parkwangi');

console.log(name1.get());    // parkwangi
console.log(name2.get());    // eddy

'JavaScript' 카테고리의 다른 글

[JavaScript]Built-in Object  (0) 2023.10.19
[JavaScript]객체 지향 프로그래밍  (0) 2023.10.18
[JavaScript] 실행 컨텍스트(Execute Context)  (0) 2023.10.17
[JavaScript] this  (1) 2023.10.17
[JavaScript] Strict mode  (0) 2023.10.16