如何在不设置全局变量的情况下确定是否调用了函数

cod*_*ove 22 javascript jquery

我正在寻找一种好的技术来摆脱我想要做的事情:设置一个全局变量.

有人第一次通过单击按钮来运行某个功能时会触发一个初始功能,将一些东西变成可拖动的东西.稍后,如果他们第二次单击该按钮我想确定该init函数是否已初始化,如果是,则不再调用它.我可以通过从init函数中设置一个全局变量然后从click函数中检查该变量来轻松完成此操作,但我想知道如何在不设置全局变量的情况下执行此操作.我真的想要一个这样做的方法的例子.

Lev*_*ith 24

您可以向函数添加属性:

function init() {
    init.called = true;
}

init();

if(init.called) {
    //stuff
}
Run Code Online (Sandbox Code Playgroud)


Ami*_*rge 19

虽然@Levi的回答应该很好,但我想提出另一个选择.你会过度编写init函数,一旦调用它就什么都不做.

var init = function () {
   // do the initializing

    init = function() {
        return false;
    }
};
Run Code Online (Sandbox Code Playgroud)

第一次调用时的函数将执行init.然后它会立即覆盖自己,以便在下次调用时返回false.第二次调用函数时,函数体只包含return false.

欲了解更多信息,请访问:http://www.ericfeminella.com/blog/2011/11/19/function-overwriting-in-javascript/