자바스크립트 콜백함수 파라메터 인자값 넘기는 방법
카테고리 없음 / 2017. 5. 26. 23:30
자바스크립트에서, onload()같은 콜백함수에 인자(파라메터)를 넘기는 방법에 대해 테스트해보았다.
C언어와 동작방식이 달라서, 어렵다.
결론 : 아래와 같이 작성한 경우, onload()함수를 호출한 곳의 파라메터 및 지역변수까지 모두 보존된다.(호출이 끝날때까지)
테스트환경 : 크롬브라우져
var test_parm,test_url,test_i=0;
function test_print_parm1(i)
{
console.log("test_print_parm1()--------",i);
console.log("test_parm=",test_parm);
console.log("test_url=",test_url);
console.log("test_i=",test_i);
console.log("--------");
}
function test_call_back(url,parm)
{
var i=10,a=new Image();
i++;
//a.onload=onload;
a.onload=function()
{
console.log("test_call_back::onload()");
test_parm=parm;//지역변수, 파라메터, 모두 보존된다. 헐~
test_url=url;
test_i=i;
test_print_parm1(i);
};
a.src=url;
return a;
}
var test_img,parm1,parm2;
parm1="img/k81.JPG";
parm2="test_parm";
test_img=test_call_back(parm1,parm2);
console.log("test_call_back() end1");
test_print_parm1(1);
parm1="xxx1";
parm2="xxx2";
test_print_parm1(2);
parm1="img/j2.JPG";
parm2="test_parm2";
test_img=test_call_back(parm1,parm2);
console.log("test_call_back() end2");
test_print_parm1(3);
parm1="xxx11";
parm2="xxx22";
test_print_parm1(4);