javascript - 为什么在 javascript 中,一个自调用的匿名函数会包围 jQuery onReady 回调?

标签 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 回调范围的原因?

当然,该功能无需被自调用的匿名函数封闭即可工作。那么,有什么好处吗?

最佳答案

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

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

像这样:

(function() {

  var a = 5;

  var f = function() { ... }


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

}).call(this);

关于javascript - 为什么在 javascript 中,一个自调用的匿名函数会包围 jQuery onReady 回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34515426/

相关文章:

javascript - 为什么我不能访问这个 JS 函数? undefined 不是函数?

javascript - jQuery:多个音频播放器按钮

javascript - 使用 Coffeescript 读取本地文件

javascript - 如何在 coffeescript js 中使用 Rails 助手

Javascript/JQuery 尺寸计算

javascript - IE 11 仍然在点击处理程序中没有 .submit() 的情况下提交表单

jquery - 是否有一种 native 方法可以创建客户端模型以发布到我的 Controller 而无需手动滚动它们?

javascript - 如何调整div的大小以填充所有空间

javascript - 用户查看页面后启动 CSS3 转换?

jquery - 在 MeteorJS 中为表格行制作动画