순환 중 함수 생성 문제

1584 단어 함수
// 

var add_handlers = function(nodes){

  var i;

  for(i = 0; i < nodes.length; i++){

    nodes[i].onclick = function (e){

      alert(i);

    };

  }

};

// 

// 

var add_handlers = function(nodes){

  var helper = function(i){

    return function(e){

      alert(i);

    }

  };

  var i;

  for(i=0; i< nodes.length; i+=1){

    nodes[i].onclick = helper(i);

  } 

};

엉망인 예는 이벤트 프로세서 함수가 변수 i 자체를 연결한 것이지 함수가 구성될 때의 변수 i의 값이 아니라는 것이다.
순환에서 함수를 만드는 것을 피합니다.

좋은 웹페이지 즐겨찾기