为什么在javascript中会有一个自称为匿名函数的jQuery onReady回调?

时间:2015-12-29 16:53:29

标签: javascript jquery coffeescript anonymous-function self-invoking-function

我目前正在玩playframework。 我开始使用使用Coffeescript的教程。 CoffeeScript转换为javascript,这个特殊的例子,javascript方法需要在加载页面时动态生成列表。

生成的javascript使用了我之前见过的模式,我读过的模式可以用于范围变量或函数。也就是说,它包含了匿名函数中的所有内容。

然而,在该匿名函数中,是以jQuery样式的window.isReady回调。

(function() {
  $(function() {
      // the code within the callback goes here!
  });

}).call(this);

这是因为这是由一组编程规则生成的,还是有理由在匿名函数内部进行回调? JQuery onReady回调范围的原因是什么?

当然,该功能可以在不被自称匿名函数包围的情况下工作。那么,有什么好处吗?

2 个答案:

答案 0 :(得分:1)

由于函数会分隔范围,因此您希望将此作为防止污染全局命名空间的最佳做法。

在这个简单的例子中,可能没有必要,因为你没有保存任何变量,但你可能有私有或其他功能(而不是全局)

像这样:

(function() {

  var a = 5;

  var f = function() { ... }


  $(function() {
      // the code within the callback goes here!
      f();
      console.log(a);
  });

}).call(this);

答案 1 :(得分:1)

它被称为IIFE(立即调用函数表达式)。嗯...至少它的味道。您通常不会将.call用于IIFE,但它会执行相同的操作。在这种情况下,其目的主要是防止污染全球范围

了解他们here