匿名函数中的静态变量

Iva*_*van 6 javascript variables jquery function memoization

我试图在JavaScript函数上模仿静态变量,具有以下目的:

$.fn.collapsible = function() {
  triggers = $(this).children('.collapse-trigger');
  jQuery.each(triggers, function() {
    $(this).click(function() {
      collapse = $(this).parent().find('.collapse');
    })
  })
}
Run Code Online (Sandbox Code Playgroud)

如何保存"折叠"对象,以便不必在每次调用时"找到"它?我知道使用命名函数我可以做类似"someFunction.myvar = collapse"的事情,但是像这样的匿名函数呢?

谢谢!

Vin*_*ert 12

您可以使用functioName.myVar = value或者arguments.callee.myVar = value如果没有当前函数名称将变量保存在函数中.

arguments.callee 是你当前的职能.


Jul*_*urg 8

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

例如:

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

应该像魅力一样工作,并确保静态初始化代码只执行一次.