변수의 Scope
- 선언한 변수가 유효한 영역
function scope
- 선언된 변수는 선언된 함수 안에서 접근 가능
- 선언된 함수 안에서 선언된 함수 (nested function)에서도 접근 가능
변수의 Shadowing
함수 안에서 밖에서도 선언되었던 같은 이름의 변수를 사용하는 경우
- 함수 밖의 변수는 잠시 가려짐 (shadowing)
- 함수 안에서는 해당 함수에서의 변수를 사용 (함수 밖 변수의 값은 변하지 않음)
- 함수에서 빠져나오면 다시 해당 변수에 접근할 수 있음
함수 안에서만 값이 유지되어야 하는 경우
- 함수 안에서 var 키워드를 사용해 선언하고 사용
- 함수 안에서 var 키워드를 사용해 선언하고 사용
여러 함수에서 값이 유지되면서 사용되는 변수의 경우
- 함수를 포괄하는 곳에서 선언하고 사용
Closure 클로저
- 함수, 함수가 선언될 때의 environment로 구성
- 함수가 정의 될 때의 environment가 함께 closure로 결합되면서, 다양한 활용이 가능
function makeCounterFunction(initVal){ var count = initVal; function Increase(){ count++; console.log(count); } return Increase; } var counter1 = makeCounterFunction(0); var counter2 = makeCounterFunction(10);
counter1의 closure
- 함수 :
function Increase(){}
- 환경 :
var count = 0;
- 함수 :
counter2의 closure
- 함수 :
function Increase(){}
- 환경 :
var count = 10;
- 함수 :
'옛날' 카테고리의 다른 글
GS25 x 디즈니, 도리를 찾아서 사진이 붙은 천하장사 소시지 (0) | 2016.07.21 |
---|---|
HTML 태그(tag) (1) | 2016.05.11 |
javascript 반복문 (0) | 2016.05.03 |
javascript 조건문 (0) | 2016.05.03 |
javascript 주석 (0) | 2016.05.03 |