Javascript 超时函数和jquery出现问题

Javascript 超时函数和jquery出现问题,javascript,jquery,Javascript,Jquery,您好,我在jquery函数中调用goon()时遇到以下Javascript错误。我以为它是有定义的…但显然不是。。。?!为什么不呢 没有定义goon变量timeout=setTimeout('goon()',3000) 您正在将一个字符串('goon()'由's分隔)传递给您的设置超时,该设置超时在全局范围中计算。虽然该函数在全局范围内不可访问,但它对动画回调仅是本地的,因此无法找到它 而是直接传递引用: var timeout= setTimeout(goon, 3000); 请注意,我还省

您好,我在jquery函数中调用goon()时遇到以下Javascript错误。我以为它是有定义的…但显然不是。。。?!为什么不呢

没有定义goon变量timeout=setTimeout('goon()',3000)

您正在将一个字符串(
'goon()'
'
s分隔)传递给您的
设置超时
,该设置超时在全局范围中计算。虽然该函数在全局范围内不可访问,但它对动画回调仅是本地的,因此无法找到它

而是直接传递引用:

var timeout= setTimeout(goon, 3000);

请注意,我还省略了
()
,因为这不会传递函数,而是执行函数并传递其返回值。

这是因为字符串
“goon()”
在全局范围内求值,而您的函数在全局范围内不可访问,它只是动画回调的本地版本。可能是@FelixKling的副本谢谢您的评论…我如何才能更改它,使其正常工作?将它们标记为private?请查看我发布的重复链接或@m90的答案。允许将字符串传递到
setTimeout()
,但不建议这样做。传递的字符串是
eval()
'd.@Juhana:这是允许的,但它是这里问题的根源,因此直接传递函数引用可以解决问题。@FelixKling可以随意编辑我的答案,因为我不知道作为字符串传递的函数名将在全局范围内求值,我不想添加任何胡言乱语。每天学习新的东西。
var timeout= setTimeout(goon, 3000);