타쿠꺼
클로저 본문
1 2 3 4 5 6 7 8 9 10 11 12 | function outFunc() { var innerVar = 1; var innerFunc = function() { console.log(innerVar); }; return innerFunc; } var foo = outFunc(); foo(); // 1 | cs |
위와 같이 생명주기가 끝난 함수를 참조하는 내부함수(innerFunc)을 클로저라고 한다.
innerFunc의 외부함수인 outFunc의 변수도 참조할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | function outFunc(bar) { var innerFunc = function(var1, var2) { var sum = bar + (var1 - var2); return sum; }; return innerFunc; } var foo1 = outFunc(5); var foo2 = outFunc(4); var sum1 = foo1(3, 2); var sum2 = foo2(3, 2); console.log(sum1); // 6 console.log(sum2); // 5 | cs |
또한 위처럼 생명주기가 끝난 함수의 내부변수들에 대한 쓰기까지 가능하다.
그리고 outFunc은 마치 공장처럼 여러 bar변수를 가진 함수를 만들어낼 수 있다.
'Javascript > Study' 카테고리의 다른 글
multi-line string (0) | 2016.06.14 |
---|---|
bubbling, capturing (0) | 2016.06.10 |
코드의 실행 과정 (0) | 2016.06.01 |
동적스코프, 정적스코프 (0) | 2016.06.01 |
난수 만들기 (0) | 2016.05.31 |
Comments