对于这段代码:JavaScript变量意外未定义
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;
}
我得到一个错误,在我的setTimeout称之为“update_argument”是不确定的。当我将其中的空字符串值从“var”分配给“window”时,错误消失,代码正常工作。我猜想这里有一个范围问题,但我不遵循它。为什么update_argument在这种情况下是未定义的,但将其放入窗口对象中让我使用它? (updatepcols是更新定价列的功能。)
你可能会解释为什么这个工作。 – jfriend00
这是有效的,因为当你将一个字符串传递给'setTimeout'时,它在全局范围内是'eval'd。当你传递一个函数时,它可以读取局部变量。 –
P.S.总是将函数传递给'setTimeout'是个好习惯。切勿传递字符串。 –