如何解决'对象#<对象>的types错误:属性'_onTimeout'不是节点中的函数?

以下代码片断:

var theAdNets = new Array(); function populateAdNetList() { } //update the list every 5 minutes. setInterval("populateAdNetList()",300000); //fetch it in 5 seconds. setTimeout("populateAdNetList();",5000); 

产生以下错误:

 TypeError: Property '_onTimeout' of object #<Object> is not a function at Timer.callback (timers.js:83:39) 

populateAdNetList()是一个函数,而不是一个对象。 函数(){}的主体中没有引用“this”。 为什么会这样呢?

这很可能是一个范围问题。 如果函数是在函数或对象的本地定义的,那么在全局范围中将不可用string进行评估。

将函数移到全局范围,或者在调用中使用函数引用,以避免范围问题:

 //update the list every 5 minutes. setInterval(populateAdNetList,300000); //fetch it in 5 seconds. setTimeout(populateAdNetList,5000); 

您必须将函数传递给setInterval 。 不是string,也不是函数的结果(直到它也是一个函数)。 正确的语法:

 setInterval(populateAdNetList, 300000); setTimeout(populateAdNetList, 5000); 

尝试简单

 setInterval(populateAdNetList,300000); //fetch it in 5 seconds. setTimeout(populateAdNetList,5000);