【问题标题】:How should closures be formatted?闭包应该如何格式化?
【发布时间】:2011-08-02 20:32:52
【问题描述】:

我通过 JSLint 运行了一个脚本,它发现了括号放置的特定问题。

我写过:

(function(){})();

建议使用:

(function(){}());

我很好奇此特定更改修复了哪些错误或问题。我会假设,因为 JSLint 将其作为一个问题,所以 必须 对某人来说是一个问题。

扩展表格:

(
  function (p) {
    ...code...
  }
)(param); //parameters after the parens

-vs-

(
  function (p) {
    ...code...
  }(param) //parameters within the parens
);

【问题讨论】:

  • @zzzzBov 哇,您显然没有读过 SLaks 链接到的答案的第一句话。它包含对两种语法之间差异的非常详细的细分,可以准确回答您的问题。

标签: javascript closures


【解决方案1】:

JSLint 试图解决的具体问题与缺少关闭 ; 有关,这可能会导致函数被解释为参数的错误:

(function A( arg ){
    // stuff
})

(function B(){
   ...
});

完全有效,Barg 的形式传递给A。但是,这通常不是预期的情况,因为这些通常是自动执行的,而后面的 () 被遗忘了。建议的语法消除了您可能不小心忘记按预期执行函数的任何混淆。

不管怎样,我几乎总是使用第一种语法;习惯。

【讨论】:

    【解决方案2】:

    根据http://www.yuiblog.com/crockford/ 上的 Crockford 所说(不记得是哪个视频,但我认为这是开始的时候),它是纯粹的样式,有助于使其更易于阅读,并且与错误或问题无关。

    编辑:

    我认为是在第三幕:终极功能

    【讨论】:

      猜你喜欢
      • 2020-11-03
      • 2017-11-28
      • 1970-01-01
      • 2016-05-11
      • 2016-04-14
      • 2011-09-09
      • 1970-01-01
      • 2010-11-25
      • 1970-01-01
      相关资源
      最近更新 更多