0

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

生成的 javascript 使用我以前见过的模式,我读过它可用于范围变量或函数。也就是说,它将所有内容都封装在一个匿名函数中。

但是,在该匿名函数中是 JQuery 风格的 window.isReady 的回调。

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

}).call(this);

这仅仅是因为这是由一组编程规则生成的结果,还是有理由在匿名函数中包含回调?确定 JQuery onReady 回调范围的原因?

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

4

2 回答 2

1

由于该函数界定了一个范围,因此您希望将其作为防止污染全局命名空间的最佳实践。

在这个简单的示例中,可能没有必要,因为您不保存任何变量,但您可以拥有私有或其他函数(而不是全局)

像这样:

(function() {

  var a = 5;

  var f = function() { ... }


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

}).call(this);
于 2015-12-29T17:02:28.397 回答
1

它被称为 IIFE(立即调用函数表达式)。嗯……至少有点味道。你通常不使用.callIIFE,但它做同样的事情。在这种情况下,它的目的主要是防止对全局范围的污染

在这里了解它们。

于 2015-12-29T17:16:40.477 回答