Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 匿名函数中的静态变量_Javascript_Jquery_Variables_Function_Memoization - Fatal编程技术网

Javascript 匿名函数中的静态变量

Javascript 匿名函数中的静态变量,javascript,jquery,variables,function,memoization,Javascript,Jquery,Variables,Function,Memoization,我尝试在JavaScript函数上模拟静态变量,目的如下: $.fn.collapsible = function() { triggers = $(this).children('.collapse-trigger'); jQuery.each(triggers, function() { $(this).click(function() { collapse = $(this).parent().find('.collapse'); }) }) }

我尝试在JavaScript函数上模拟静态变量,目的如下:

$.fn.collapsible = function() {
  triggers = $(this).children('.collapse-trigger');
  jQuery.each(triggers, function() {
    $(this).click(function() {
      collapse = $(this).parent().find('.collapse');
    })
  })
}
如何保存“折叠”对象,使其不必在每次调用时都被“找到”?我知道使用命名函数可以执行“someFunction.myvar=collapse”之类的操作,但是像这样的匿名函数呢


谢谢

只要将函数分配给这样的变量,就应该能够以
$.fn.collable
的形式访问它,从而将变量分配为
$.fn.collable.myvar

您可以将变量保存在函数中,如果没有当前函数名,请使用
functionme.myVar=value
arguments.callee.myVar=value


参数。被调用方
是您当前使用的函数。

对于匿名函数,您可以使用返回函数的函数

例如:

var myAnonymousFunction = (function(){
    var myFirstStatic = $("#anElement");
    var anotherStatic = true;
    return function(param1,param2) {
        // myFirstStatic is in scope
        // anotherStatic also
    }
})();

应该像一个符咒一样工作,并且您可以确信静态初始化代码只执行一次。

似乎找到了这个问题的更好答案

简而言之,您实际上可以在不污染名称空间的情况下为匿名函数命名,但仍然允许自引用

mything.prototype.mymethod = function myKindOfFakeName() {
    myKindOfFakeName.called = true;
}

我很想用这个,但对我的大脑来说有点困惑。不管怎样,谢谢。那不起作用,因为那不是我试图附加变量的函数。谢谢。箭头功能怎么样?