closure
-
자바스크립트의 클로저(Closure)프론트엔드/JavaScript 2020. 9. 15. 05:07
클로저(closure)란? 클로저란 함수를 일급객체로 취급하는 함수형 언어(하스켈, 스칼라 등)에서 쓰이는 일종의 테크닉이다. "클로저는 함수와 그 함수가 선언됐을 때 렉시컬 환경과의 조합이다"라는 유명한 말이 있다. 그런데 해당 내용으론 이해하기가 힘들고, 중첩된 함수에서 외부 함수는 이미 종료됐지만, 외부 함수에 있는 내부 함수는 그대로 살아있는 상황을 말한다. 이해하기 쉬우면 코드를 보면 더 편하다. 위 코드는 외부 함수에서 반환값으로 내부 함수를 반환하거나, 외부 함수에서 내부 함수를 호출해준 경우다. 이때 잘 보면 내부함수 inner()를 호출했는데 10이 출력됐다. 근데 잘 생각해보면 좀 이상하다. 왜냐면 외부 함수는 내부 함수를 리턴하면서 종료됐다. 근데 내부 함수는 이때 외부 함수가 가진 ..