클로저3 클로저 - 2 클로저 응용의 예 이전에 했던 예를 활용해서 응용 개발하기 function outer() { var count = 0; return { increase: function() { return ++count; }, derease: function() { return --count; } }; } var counter = outer(); console.log(counter.increase()); // === 1 console.log(counter.increase()); // === 2 console.log(counter.decrease()); // === 1 var counter2 = outer(); console.log(counter2.increase()); // === ? 이번에는 함수를 바로 반환하지 않고.. 2020. 2. 14. 클로저 - 1 클로저란? 클로저(closure)는 자바스크립트의 동작을 이해하는 데 꼭 알고 넘어가면 좋은 개념으로 다음과 같이 정의된다. 특정 함수가 참조하는 변수들이 선언된 렉시컬 스코프(Lexical scope)는 계속 유지되는데, 그 함수와 스코프를 묶어서 클로저라고 한다. 클로저의 특징 클로저가 나타나는 가장 기본적인 환경은 스코프 안에 스코프가 있을 때, 즉 function 안에 function이 선언되었을 때이다. function() { var count = 0; var inner = function() { return ++count; }; return inner; } var increase = outer(); console.log(increase()); // === 1 console.log(increas.. 2020. 1. 22. 스코프 - 3 스코프의 지속성 엄밀히 따져보면 스코프가 생성되는 방식이 기존 언어와 다르지는 않다. 하지만 스코프가 지속되는 것은 다른 언어와는 다른 자바스크립트만의 강점 중 하나이다. 자바스크립트에서 이러한 스코프의 지속성이 필요한 이유는 새로운 스코프가 생성되고 스코프 체인을 참조하는 함수를 변수에도 넣을 수 있고, 다른 함수의 인자로 넘겨줄 수도 있으며, 함수의 반환값으로도 활용할 수 있기 때문이다. 즉, 지금 함수가 선언된 곳이 아닌 전혀 다른 곳에서 함수가 호출될 수 있어서, 해당 함수가 현재 참조하는 스코프를 지속할 필요가 있는 것이다. 함수를 이용한 문제해결 지속성을 이해하기 위해 앞의 클릭 이벤트 핸들러 문제를 함수를 이용하여 해결해 본다. Click me! DIV 0 Click me! DIV 1 Cli.. 2020. 1. 21. 이전 1 다음