Javascript 闭包应该如何格式化?
我通过JSLint运行了一个脚本,它发现了一个带有括号的特殊问题 我曾写道:Javascript 闭包应该如何格式化?,javascript,closures,Javascript,Closures,我通过JSLint运行了一个脚本,它发现了一个带有括号的特殊问题 我曾写道: (function(){})(); 建议使用: (function(){}()); 我很好奇这个特殊的更改修复了哪些bug或问题。我认为,因为JSLint把它作为一个问题,所以肯定有人会有问题 扩展形式: ( function (p) { ...code... } )(param); //parameters after the parens -vs- 根据Crockford on(不记得是哪一个
(function(){})();
建议使用:
(function(){}());
我很好奇这个特殊的更改修复了哪些bug或问题。我认为,因为JSLint把它作为一个问题,所以肯定有人会有问题
扩展形式:
(
function (p) {
...code...
}
)(param); //parameters after the parens
-vs-
根据Crockford on(不记得是哪一个视频,但我认为这是一个开始)的说法,这是一个纯粹的风格设计,有助于使它更易于阅读,与bug或问题无关
编辑:
我认为这是在第三幕:功能的终极中,JSLint试图解决的具体问题与缺少关闭
有关代码>这可能导致函数被解释为参数时出现错误:
(function A( arg ){
// stuff
})
(function B(){
...
});
是完全有效的,B
作为arg
传递给A
。但是,这通常不是预期的情况,因为通常这些都是自动执行的,并且尾部的()
被忘记了。建议的语法消除了您可能意外忘记按预期执行函数的任何混淆
值得一提的是,我几乎总是使用第一种语法;习惯。@zzzzBov哇,你显然没有读过SLaks链接的答案的第一句话。它包含了两个语法之间差异的一个非常详细的分解,准确地回答了您的问题。
(function A( arg ){
// stuff
})
(function B(){
...
});