클로저(closure)에 대하여

클로저의 의미

클로저(closure)라는 영어단어의 사전적 의미는 ‘닫혀있음’, ‘폐쇄성’, ‘완결성’ 정도의 의미를 가집니다.
그렇다면 자바스크립트에서의 클로저는 무슨 의미를 가지고 있을까요?

클로저(closure)는 여러 함수형 프로그래밍 언어에서 등장하는 보편적인 특징입니다.
자바스크립트에서만 사용하는 개념이 아니다 보니 ECMAScript 명세에서도 클로저의 정의를 다루지 않고 있습니다.
다양한 서적에서 클로저를 정의하고 있는 문장들을 한번 살펴보겠습니다.

  • 자신을 내포하는 함수의 컨텍스트에 접근 할 수 있는 함수 - 더글라스 크록포드, ‘자바스크립트 핵심 가이드’(한빛 미디어)
  • 함수가 특정 스코프에 접근 할 수 있도록 의도적으로 그 스코프에서 정의 하는 것 - 에단 브라운, ‘러닝 자바스크립트’(한빛 미디어)
  • 함수를 선언할 때 만들어지는 유효범위가 사라진 후에도 호출 할 수 있는 함수 - 존 레식, ‘자바스크립트 닌자 비급’(인사이트)
  • 이미 생명 주기상 끝난 외부 함수의 변수를 참조하는 함수 - 송현주, 고현준, ‘인사이드 자바스크립트’(한빛 미디어)
  • 자유변수가 있는 함수와 자유변수를 알 수 있는 환경의 결합 - 에릭 프리먼, ‘Head First Javascript Programing’(한빛 미디어)
  • 로컬 변수를 참조하고 있는 함수 내의 함수 - 야마다 요시히로, ‘자바스크립트 마스터 북’(제이펍)
  • 자신이 생성될 때의 스코프에서 알 수 있었던 변수들 중 언젠가 자신이 실행될 때 사용할 변수들만을 기억하여 유지시키는 함수 - 유인동, ‘함수형 자바스크립트 프로그래밍’(인사이트)

러닝 자바스크립트 스터디 자료 - CHAPTER 7. 스코프

스코프는 변수와 상수, 매개변수가 언제 어디서 정의되는지 결정합니다.

변수가 존재하지 않으면 그 변수는 스코프안에 ‘있지않음’을 직관적으로 알수 있다.
즉 아직 선언하지 않은 변수나 함수가 종료되면서 존재하지 않게 된 변수는 분명 스코프안에 ‘있지 않다’

스코프존재를 구별해야 한다.
가시성이라고도 불리는 스코프는 프로그램의 현재 실행 중인 부분, 즉 실행 컨텍스트에서 현재 보이고 접근 할 수 있는 식별자들을 말한다. 반면 존재한다는 말은 식별자가 메모리에 할당된 무언가를 가리키고 있다는 뜻이다.

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×