을 정의되지 않은 :자바 스크립트 변수가 예기치 않게 코드 블록의 경우
if(!skipit)
{
var update_argument='';
if (document.formname.fieldname)
{
update_argument=document.formname.fieldname[document.formname.fieldname.selectedIndex].value;
}
window.setTimeout('updatepcols(update_argument)',250);
return false;
}
내가 "update_argument는"정의되지 않은 것을 내에서는 setTimeout 호출에서 오류가 발생했습니다. 내가 "var"에서 "window."로 널 문자열 값을 할당 한 줄을 변경하면 오류가 사라지고 코드가 작동합니다. 여기에 범위 문제가 있다고 생각 하겠지만, 나는 그것을 따라 가지 않습니다. 이 경우 update_argument가 정의되지 않은 이유는 무엇입니까?하지만이를 window 객체에 넣으면 사용할 수 있습니까? (updatepcols는 가격 열을 업데이트하는 함수입니다.)
이유가 무엇인지 설명 할 수 있습니다. – jfriend00
문자열을'setTimeout'에 전달하면 전역 범위에서'eval'd가되기 때문에 이것은 작동합니다. 함수를 전달하면 로컬 변수를 읽을 수 있습니다. –
P. 함수를'setTimeout'에 항상 전달하는 것은 좋은 습관입니다. 문자열을 전달하지 마십시오. –