在两个不同的进程之间切换功能的最佳方法是什么?

fan*_*ncy 7 javascript

我有一个函数,我希望它每次触发时都执行交替进程.任何有关如何实现这一目标的帮助都会很棒.

function onoff(){
    statusOn process /*or if on*/ statusOff process
}
Run Code Online (Sandbox Code Playgroud)

Ple*_*and 7

JavaScript的一个有趣的方面是函数是第一类对象,这意味着它们可以具有自定义属性:

function onoff() {
    onoff.enabled = !onoff.enabled;
    if(onoff.enabled) {
        alert('on');
    } else {
        alert('off');
    }
}
Run Code Online (Sandbox Code Playgroud)

为此,您的函数应该有一个名称.如果您的函数是匿名的(未命名),您可以尝试使用arguments.callee它来访问它,但在新的ES5标准中不推荐使用它,而在使用其严格模式时则不可以.


Eli*_*ing 5

通过使用闭包,您可以定义只能由函数本身访问的静态变量:

var toggle = (function()
{
    var state = true;

    return function()
    {
        if(state)
            alert("A");
        else
            alert("B");

        state = !state;
    };
})();
Run Code Online (Sandbox Code Playgroud)

现在你可以反复调用toggle(),它会在"A"和之间交替"B".该state变量无法从外部访问,因此您不会污染全局变量范围.