javascript - 闭包应该如何格式化?

标签 javascript closures

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

我写过:

(function(){})();

建议使用:

(function(){}());

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

扩展形式:

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

-对比-

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

最佳答案

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

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

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

完全有效,B 作为arg 传递给A。然而,这通常不是预期的情况,因为它们通常是自动执行的,而尾随的 () 被遗忘了。建议的语法消除了您可能不小心忘记按预期执行函数的任何混淆。

就其值(value)而言,我也几乎总是使用第一种语法;习惯。

关于javascript - 闭包应该如何格式化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6918220/

相关文章:

python 闭包/嵌套函数在分配给外部数组时失败

r - tag$head : object of type 'closure' is not subsettable 中的错误

swift - “弱”可能只适用于类和类绑定(bind)协议(protocol)类型,而不是 'ContentView' 我缺少什么?

javascript - 在 React 中完成多个任务后提交表单

javascript - Python - 无法导入模块 'PIL'

javascript - Monaco Editor : only show part of document

javascript - 如何避免未捕获的安全错误: Blocked a frame with origin with phonegap

rust - 您可以使用 impl Fn 接受任意大小的闭包作为参数吗?

javascript - 构建用于交互式讲故事的滚动条的最简约方法?

javascript - 闭包出了问题——为什么匿名函数最后返回