내부 함수(함수 안의 함수)가 내부 함수를 둘러싼 외부 함수의 변수나 매개변수를 이용했는데

이 외부 함수가 종료되어도 내부 함수에서 사용한 변수 값은 내부 함수 내에서 계속 유지되는

기능을 클로저라고 부른다.

<div id="main">hello</div>
<script>
 var obj = document.getElementById("main");

 obj.style.border = "1px solid red";

 setTimeout(function(){
  obj.style.display = 'none';
 }, 1000);

 function delayedAlert(msg, time){
  setTimeout(function(){
   alert(msg);
   },time);
 }

delayedAlert("Welcome", 2000); 
</script>


프로자바스크립트 책에서 나온 내용인데 setTimeout을 setTimeout  1초후 안보이게 하는데 obj를 쓸수 있다는 이야기?..  두번째도 2초후 alert 메세지 인데 msg를 쓸수 있다는 것??? 원래 되는거 아닌가?  궁금하다.

커링은 좀 신선했다.

<script> 
function addGenerator(num){
  return function(toAdd){
   return num + toAdd
  };
 }
 var addFive = addGenerator(5);

 alert(addFive(4) == 9);
</script>


함수를 만드는 건데 위에 함수를 선언하고 addFive를 5를 더하는 함수를 만드는 함수로 만든 것이다. 그래서 addFive(4)를 하면 9가 된다. 궁금한 것은 toAdd가 뭘까? 하는 건이다. 그냥 저렿게 선언해도 되는 것인지..
쩝 아 모르겠다 쌍~ alert(toAdd); 찍어보니 4가 나왔다 함수로 들어올 함수 변수 정도?  어렵지만 함수를 만들때
좋을 것 같다.

http://jibbering.com/faq/faq_notes/closures.htm 클로저에 대한 자세한 내용참조 (영어 울렁증이..)

+ Recent posts