减少函数中函数名的使用

时间:2018-07-27 17:49:30

标签: javascript

当我搜索函数名称时-当我看到如示例中的大量函数名称时,它变得笨拙。在大型代码库中,我在搜索如何以及从何处调用函数时浪费时间:

function do_something()
    {

        if (typeof do_something.flag == "undefined")
            {
                do_something.flag = true;
            }

        if (do_something.flag == null)
            {
                do_something.flag = true;
            }


    }

在这里,当我搜索do_something以便可以从被调用的地方查看时,我会发现很多由do_something.flag1do_something.flag2等组成的行,这些行在大多数情况下没有任何用处这样的搜索。在大型函数中,有很多这样的行占用搜索输出。

我有另一种情况。在(Netbeans)IDE中,我想执行Ctrl-F do_something函数以查找在文件中的调用位置。现在,我发现在函数本身中按F3键可以在包含do_something.var1=5等内容的行上进行迭代。

总之,创建对象全局变量时,有什么方法可以减少函数中函数名的使用?

我的功能要长得多,但是我将给出导致此问题的中级功能的真实示例:

function slow_down_clicks(label, userfunc, timeinmsec)
    {
        console.log("slow_down_clicks=" + label);

        if (typeof slow_down_clicks.myobj == UNDEFINED)
            {
                slow_down_clicks.myobj = {};
            }

        if (typeof slow_down_clicks.myobj[label] == UNDEFINED)
            {
                slow_down_clicks.myobj[label] = {
                    inqueue: false,
                    lastclickedtime: 0,
                    login_post_error_count: 0
                };
            }

        var myfunc = function ()
            {
                console.log("Executing the user func");
                slow_down_clicks.myobj[label].inqueue = false;
                slow_down_clicks.myobj[label].lastclickedtime = new Date().getTime();

                userfunc();
            }
        console.log("Due to error in home.aspx reloading it", ++slow_down_clicks.myobj[label].login_post_error_count);

        if (slow_down_clicks.myobj[label].inqueue == false)
            {

                var diff = new Date().getTime() - slow_down_clicks.myobj[label].lastclickedtime;
                console.log("diff=", diff, timeinmsec);
                if (diff > timeinmsec)
                    {

                        myfunc();  //click login
                    }
                else
                    {
                        console.log("queuing the request after:", timeinmsec - diff);
                        slow_down_clicks.myobj[label].inqueue = true;

                        setTimeout(function ()
                            {
                                console.log("called myfunc babalatec");
                                myfunc();

                            }, timeinmsec - diff);
                    }
            }
        else
            {
                console.log("Discarding this request...");
            }
    }

1 个答案:

答案 0 :(得分:0)

我认为您可以将字段定义为普通变量,然后将代码放入其自己的文件中。然后,您可以在函数内部按其名称引用变量,因为它们在函数的闭包内。这些变量将无法在外部访问,因为您将其限制在其自己的文件中。

like:

values

将上述代码段放在单独的文件中,并在需要使用该功能时导入该功能。