2015년 3월 1일 일요일

지연변수 스코프를 만들기위해 즉시 실행함수 표현식 사용법

반복문등에서 클로져를  이용하 여 지역변수를 참조하려할때, 클로저에서 변수값을 복사가 아닌 참조를 ㅎㅏ는 특성때 문에 반복 문의 마지막 변수만 참조하는 문제점이 있다.

--------------

function wrapElements(a){
var result=[];
for(var i=0,n=a.length;i<n;i++){
result[i]=function(){return a[i];};
}

}
var wrapped=wrapElements([10,20,30]);
var f=wrapped[0];
f();

이때,클로 져를  즉시실행함수로 감싸서  즉 시 실행함수에서  별도의 변 수 에 반복문의 반복 변수등을 복사저장한다음 클로져를 사용하면 된다.

function wrapElements(a){
var result=[];
for(var i=0,n=a.length;i<n;i++){
//즉시실행함수에서 i 값을 j 로 복제한다.
(function(j){
//result[i] 값이 객체로 온다는 것 주의
result[i]=function(){return a[j];};
})(i);

}
return result;

}
var wrapped=wrapElements([10,20,30]);
//리턴
var f=wrapped[1];
console.log(f());

Related Posts:

  • yslow.org 웹사이트 성능분석도구yslow.org… Read More
  • 이펙티브 자바스크립트이책은 사야됨 .정말로. 혼또우니~ == 비교는 절대금물, 자바스크립트는 지 맘대로 형변환을 하기때문에 == 비교는 절대 안됨. ===권장 전역변수는 아예 사용하지마라. 단 플랫폼에 대한 프로퍼티를 참고 할때만 전역변수에 접근해라. 지역변수 선언시 var 를 잊지마라. 잊는순간 전역변수가 될수도 있다. Closure 는 이해하기 어렵지만 익숙해지면 좀더 유연한 프로그래밍이 가능하다.별도 게시물 준비.… Read More
  • 객체지향 자바스클립트의 원리1장 원시타입과 참조타입: 자바스크립트는 일급함수이다.원시타입 : Boolean,Null,String,Number,Undefiend참조타입 : 객체를 말함. 객체는 참조를 한다음 반드시  null 해주는게 좋다.-프로퍼티의 접근 아래와 같은 경우도 가능하다.var array = [];var method = "push";array[method](12345); <- 즉 array.push(12345… Read More
  • node,npm,grant 등 이해하기http://skullacy.com/javascript/4668… Read More
  • 대학생을 위한 웹개발 공부 체크리스트?http://blog.daum.net/_blog/BlogTypeView.do?blogid=0PPwB&articleno=1437&categoryId=19&regdt=20141216143555… Read More

0 comments:

댓글 쓰기