功能有效,功能变量没有

时间:2014-10-05 02:28:13

标签: javascript function syntax closures setinterval

我试图将一个计时器变量移动到一个闭包中,就像这个

一样
var varEndAndStartTimer = (function() {
    var timer; // persisted in closure
    return function() {
        if (timer) clearInterval(timer);
        timer = setInterval(doIt, 500);
    };
})();

var theTimer;
function startIt() {
    function endAndStartTimer() {
        if (theTimer) clearInterval(theTimer);
        theTimer = setInterval(doIt, 500);
    }
    endAndStartTimer();
}

如果我调用函数endAndStartTimer,事情就像我期望的那样起作用。如果我改为呼叫varEndAndStartTimer某些循环。

代码当然有点复杂,我甚至无法确切地知道它是如何循环的。但代码的唯一区别在于上述差异。

这些版本不应该完全相同吗? (varEndAndStartTimer是在调用startIt时定义的。)

更新 上面的所有代码都在匿名函数中,只调用一次(在声明中)。

可以调用window["callStartIt"] = function() { startIt(); }形式的链接。我认为它在这里被称为,但我现在不确定。

也许不允许这样的结构?

0 个答案:

没有答案