非自我调用,匿名,javascript函数有什么意义?

时间:2015-12-15 21:21:56

标签: javascript anonymous-function

我理解自我调用匿名函数如下:

(function () {
    //...
})();

并且大多数时候它们用于在框架中创建闭包和抽象变量。但是,我也看到不同网站中的来源声明了匿名函数,但是他们没有调用它们。我很好奇这些是如何使用的。是否在加载脚本时调用它们?请注意,在“源”选项卡中,它们看起来不像.js文件。相反,他们有一个这样的名字:

extensions::utilsextensions::Event

他们看起来像是某种框架/图书馆的一部分?我不确定。例如,extensions::Event包含此代码:

(function($Object, $Function, privates, cls, superclass) {'use strict';
  function Event() {
    var privateObj = $Object.create(cls.prototype);
    $Function.apply(cls, privateObj, arguments);
    privateObj.wrapper = this;
    privates(this).impl = privateObj;
  };
  if (superclass) {
    Event.prototype = Object.create(superclass.prototype);
  }
  return Event;
}) //<-Self invocation missing.

如您所见,这只是声明但未使用。我唯一能想到的是,这个匿名函数实际上是分配给一个名为Event的变量,是extensions对象的一部分还是什么?

1 个答案:

答案 0 :(得分:0)

由于这些文件的唯一内容是非自调用函数,因此最可能的解释是文件的整个内容通过在末尾附加eval来获得()并执行。通过这种方式,我们可以访问匿名函数,而无需将它们分配给变量,即var reference = function () {},并且仍然可以在需要时执行它们,而不是在创建它们时执行它们。

编辑:这些&#39;文件&#39;似乎是谷歌浏览器使用的东西。我在不相关的网站上找到了它们。当我从firefox打开同一个网站时,我也无法找到它们。