setTimeout导致Uncaught TypeError:number不是函数

时间:2015-02-10 23:42:50

标签: javascript jquery settimeout typeerror cleartimeout

所以我在函数之外声明了空白变量。

//To be Timeouts
var progressionTimer;
var nextTimer; 
var cycleTimer;

然后在函数

progressionTimer = setTimout(loadNextFunction, 2000);
progressionTimer();

nextTimer = setTimeout(loadOutsideFunction, 2000);
nextTimer();

//etc

然而每当其中一个声明被称为

nextTimer();

我在chrome / firefox / etc中的控制台填充了这个

Uncaught TypeError: number is not a function

它完全按照预期运行,clearTimeout可以正常工作,但是控制台错误让我感到沮丧,任何人都可以在不失去功能的情况下解决这个问题并且仍然可以使用clearTimeout吗?

1 个答案:

答案 0 :(得分:1)

setTimeout返回一个处理程序,一个允许您引用超时的ID,以便您可以使用clearTimeout清除它,这是一个数字。

返回一个可以执行的函数,这就是问题,你试图执行setTimeout的返回值

nextTimer = setTimeout(loadOutsideFunction, 2000);
nextTimer(); // not a function, but a number referencing the timeout ?

clearTimeout(nextTimer); // works just fine