2011-08-02 23 views
6

我通过JSLint运行了一个脚本,它找出了括号放置的具体问题。应该如何格式化闭包?

我曾写过:

(function(){})(); 

,并建议使用:

(function(){}()); 

我很好奇,什么样的错误或问题,这个特别的变动修正。我会假设因为JSLint挑出它作为一个问题,必须是一个问题的人。

扩展形式:

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

航班吗

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

http://stackoverflow.com/questions/5938802/are-function-and-function-functionally-equal-in/5938845#5938845 – SLaks

+0

@zzzzBov哇,你显然没有读任何东西过去的第一句话回答SLaks链接到。它包含了精确回答您的问题的两种语法之间差异的非常详细的分解。 –

回答

5

JSLint的是试图解决的具体问题涉及到缺乏关闭;的这可能会导致一个错误,其中一个功能被解释为一个参数:

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

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

是完全有效,B传递给Aarg。然而,这往往不是预期的情况,因为这些往往意味着自我执行,并且尾随的()被遗忘。建议的语法消除了您可能意外忘记按预期执行功能的任何混淆。

对于它的价值,我几乎总是使用第一种语法;习惯。

0

据克罗克福德上http://www.yuiblog.com/crockford/(不记得哪一个视频,但我认为这是朝着开头)它是纯粹的风格来帮助它更容易阅读并且与错误或问题无关。

编辑:

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

相关问题