Java Script - 클로저

2024. 3. 24. 02:35Coding/Java Script

function outter(){							//외부함수
	var title = 'coding everybody';
    return function(){							//내부함수
    	alert(title);
    }
}
var inner = outter();
inner();

외부함수 outter에 내부함수가 정의되어 있고, 내부함수를 return하고있다. 

outter함수는 return하고 있다. 그럼에도 불구하고 내부함수에서는 외부함수의 지역변수title에서 가져와서 

inner를 호출하고있다.

inner함수를 호출한다는 것은 내부함수에 있는 alert(title)이라고 하는 이 구문을 실행 하는 것인데 

title은 내부함수에 존재하는 값이 아니고 외부함수 outter에 존재하는 값이다.

즉, 외부함수는 이미 종료되었는데 우리는 그 외부함수로 인해서 파생된 내부함수에서 이미 사라진 외부함수에 접근을 시도하고 있고 그 접근이 성공적으로 이뤄졌다는 것이다. 이것이 클로저의 독특한 점이다.

 

내부함수를 포함하고 있는 외부함수에  접근할 수 있을 뿐만 아니라 그 외부함수가 종료된 이후에도 내부함수를 통해서 접근할 수 있다라는 것이 바로 클로저의 중요한 특징이다. 

 

*return은 함수가 종료되었다. 생을 마감한 것을 뜻한다.

*매개변수는 함수안에서 지역변수로 사용된다.