(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 |