Javascript 设置间隔可以';t访问变量?

Javascript 设置间隔可以';t访问变量?,javascript,Javascript,我有一个名为showchild(pgid)的JavaScript函数。我已经调用了文档准备中的函数 $(document).ready(function() { var pgid = $('#hiddenuserkey').val(); //alert(pgid); showchild(pgid); setInterval("showchild(pgid)",1000); }); 您正在以最糟糕的方式使用它—传递字符串 请改用以下代码: setInterv

我有一个名为
showchild(pgid)
的JavaScript函数。我已经调用了文档准备中的函数

$(document).ready(function()
{
     var pgid = $('#hiddenuserkey').val();
    //alert(pgid);
     showchild(pgid);
     setInterval("showchild(pgid)",1000);
});

您正在以最糟糕的方式使用它—传递字符串

请改用以下代码:

setInterval(function() {
    showchild(pgid);
}, 1000);

传递字符串时,将在全局上下文中对其求值,而无需访问任何非全局变量。通过传递函数(首选方式),所有可访问的变量都保留在函数的闭包中,因此调用函数时,
pgid
在该函数中定义。

您正在以最糟糕的方式使用它-传递字符串

请改用以下代码:

setInterval(function() {
    showchild(pgid);
}, 1000);

传递字符串时,将在全局上下文中对其求值,而无需访问任何非全局变量。通过传递函数(首选方式),所有可访问的变量都保留在函数的闭包中,因此调用函数时,
pgid
在该函数中定义。

这是因为
pgid
ready
处理程序的本地变量,但字符串
showchild(pgid)
在全局范围内进行计算。这就是为什么不应该将字符串传递给
setXXXXXX
。这是一个答案,而不是注释-1表示“不工作”。请确保包含适当的诊断信息(将来)。这是因为
pgid
ready
处理程序的本地处理程序,但是字符串
“showchild(pgid)”
是在全局范围内计算的。这就是为什么不应该将字符串传递给
setXXXXXX
。这是一个答案,而不是注释-1表示“不工作”。请确保包含适当的诊断信息(将来)。