Edit in JSFiddle

<script type="text/javascript">
	function f(){
		var n = 123; //지역변수
		//내부함수
		function g(){
			document.write('n = ' + n + '<br>');
			document.write('g is called');
		}
		return g; //내부함수를 반환
	}
	//함수호출
	var n = f(); 
	
	document.write(n + '<br>');
	
	//f함수가 종료되었기 때문에 f함수의 지역변수n은
	//소멸되어야 하지만 내부함수g에서 n을 사용하고 있기 때문에
	//지역변수n이 소멸되지 않고 호출됨.
	//클로저(Closures) : 지역변수를 남겨두는 현상
	n(); //g함수(내부함수) 호출
	
	document.write('<br>===============<br>');
	//f함수를 호출하면 g함수(내부함수)를 반환하고
	//반환된 g함수를 변수에 대입하지 않고 바로 호출
	f()(); 
	
</script>