2012-05-09 47 views
3

可能重复:
Location of parenthesis for auto-executing anonymous JavaScript functions?
Are “(function () { }) ()” and “(function () { } ())” functionally equal in JavaScript?JavaScript的匿名函数的语法变化

我见过的JavaScript匿名函数写两种不同的方式:

(function(){ 

})(); 

(function(){ 

}()); 

我一直认为最重要的一个是正确的,从来没有遇到过最低的一个。我认为这可能没有什么区别,但我认为我应该确定。这两者之间有什么区别或两种方式是否相同?

回答

2

它们是等价的。

左括号是最重要的一点 - 这是一个可以帮助解析器搞清楚什么是未来是函数表达式而非函数声明

请参阅http://kangax.github.com/nfe/了解不同之处。

+0

难道我只是有一个似曾相识的感觉还是有你回答了同样的问题,这个相同的答案 – Esailija

+0

@Esailija嗯,如果我做了,我不记得它... – Alnitak

+2

lols,这是这一个:D http://stackoverflow.com/questions/593880 2/are-function-and-function-functionally-equal-i/5938902#5938902我记得因为我upvoted你。它甚至具有相同的斜体。 – Esailija

0

Oohh .......这只是为了好玩.....


他们是平等的,但使用这种短路封闭的方式来代替:(Twitter使用它!)

!function(){ 

}(); 

您将节省很多字符。每次1次。


但我更喜欢用这一个,我认为这是其可读性:

(function(){ 

})(); 

比:

(function(){ 

}()); 
+4

虽然......不一定更容易理解,但总的来说,我认为使用代码缩减器会更好。 –

+4

对于代码来说,明显的重要性要远远大于代码。 – Quentin

+1

不,不要用那种方式 - 它不容易被识别。 – Alnitak