Lexical environment
선언 당시의 환경에 대한 정보를 담는 객체(구성 환경)
'이 함수는 이러이러한 것들로 구성되어 있다' 같은 정보
클로저(CLOSURE)
함수 내부에서 생성한 데이터와 그 유효범위로 인해 발생하는 특수한 현상 / 상태
외부에 정보를 제공할 수 있는 유일한 수단은 Return
함수내부에서 다시 함수를 return 한다고 해도 최초 선언시에 생성된 스코프와 환경정보는 변하지 않고
최초 선언시의 정보를 유지한다.
스코프(유효범위)는 정의될 때 결정된다. 그렇기 때문에 정의됐을 때 당시에 들고있던 정보를 그대로 유지할 수 있는 것이다.
클로저의 이점
접근 권한 제어
지역변수 보호
데이터 보존 및 활용
function a() {
var x = 1;
return function b() {
console.log(x);
}
}
var c = a();
c();
function setCounter() {
var count = 0;
return function() {
return ++count;
}
}
var count = setCounter();
count();
private member 생성 방법
1. 함수에서 지역변수 및 내부함수 등을 생성한다.
2. 외부에 노출시키고자 하는 멤버들로 구성된 객체를 return 한다.
-> return한 객체에 포함되지 않은 멤버들은 private하다.
-> return한 객체에 포함된 멤버들은 public하다.
var createCar = function(f, p) {
var fuel = f;
var power = p;
var total = 0;
return {
run: function(km) {
var wasteFuel = km / power;
if(fuel < wasteFuel) {
console.log('이동 불가');
return;
}
fuel -= wasteFuel;
total += km;
}
}
};
var car = createCar(10, 2);
'Web > Javascript' 카테고리의 다른 글
CLASS (0) | 2018.01.15 |
---|---|
PROTOTYPE (0) | 2018.01.15 |
CALL, APPLY, BIND 메소드 (0) | 2018.01.11 |
THIS (0) | 2018.01.11 |
함수 (0) | 2018.01.11 |