<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>