"The Definitive Guide to JavaScript" 또는 "Elevation"과 같은 JS에 관한 많은 책에서는 초보자가 이해할 수 없을 만큼 모호한 방식으로 클로저를 설명합니다! 하지만 두려워하지 마십시오. 오늘은 클로저가 무엇인지 매우 간단한 방법으로 설명하겠습니다. 초보자를 위한 클로저 설명입니다. 막연하고 무뚝뚝한 표현은 없고, 한눈에 이해하실 수 있습니다. 틀린 부분이 있으면 바로잡아주세요!
클로저를 이해하려면 먼저 변수의 범위를 이해해야 합니다.
JS에는 전역 변수와 지역 변수라는 두 가지 변수 범위가 있습니다. 이름에서 알 수 있듯이 전역 변수는 모든 위치에서 참조할 수 있는 변수이고, 지역 변수는 특정 위치에서만 참조할 수 있는 변수입니다. 아래 코드.
var globalScope="global scope"; function f(){ var localScope="local scope"; console.log(globalScope);//global scope } console.log(localScope);//undefined
함수 f()에서는 함수 몸체 외부에 정의된 globalScope에 접근할 수 있지만, 함수 몸체 외부에 정의된 localScope에는 접근할 수 없습니다. 이것이 전역 변수와 지역 변수의 차이점입니다.
함수 본문 외부에서 localScope에 절대 액세스할 수 없는 것이 가능한가요? 아니요, 이를 위해 폐쇄가 탄생했습니다.
function f(){ var localScope="local scope"; return function(){ console.log(localScope); } } f()();//local scope
f() 함수 외부에서 지역 변수 localScope에 액세스했습니다. f() 함수 내에 정의된 익명 함수는 클로저입니다!