2011-04-10 23 views
0

这些代码似乎相同的方式工作:这些JavaScript匿名函数有什么不同?

世界,你好

(
    function(a) 
    { 
     alert(a); 
    } 
)('Hello'); 

另一个世界你好

(
    function(a) 
    { 
     alert(a); 
    }('Hello') 
); 

是否有任何实际的差异?

+1

我们有一种习惯,称我为“innie”(第二选项)和“outie”(第一选项)。我们更喜欢“outie”,因为这些parens是作为暗示执行的函数的标记,而不包含执行本身。 – Gabriel 2011-04-10 05:36:00

回答

3

编号鉴于代码完全按照您发布的代码,没有有效的区别。这两个表单构造相同的匿名函数,然后使用相同的参数调用该函数。

+0

谢谢!这让我感到困惑......而且我喜欢第一种写作风格:) – Japboy 2011-04-10 03:57:41

+3

为了纪录,道格拉斯克罗克福德 - 以及扩展后的JSLint--更喜欢第二种风格。 (“将调用移入包含该函数的parens。”) – davidchambers 2011-04-10 04:02:14

+0

@davidchambers:的确如此。在我看来,JSLint完全没有意义的区别。 – 2011-04-10 20:34:09