可能重复:
What do parentheses surrounding a JavaScript object/function/class declaration mean?在JavaScript的什么呢(......)做的正是
与同事,这是最好
(function(){...}())
或
最近讨论(function(){...})()
我不知道在基本级别实际做了什么(...),以及在上述情况下js引擎的作用有什么区别。理论上(即使只有一小部分)比另一个更快吗?如果我的函数返回一个对象,那么(..)在第一个示例中对该对象做了什么?
任何人都可以解释。
*编辑我在网上最接近的一个解释是http://dmitrysoshnikov.com/ecmascript/chapter-5-functions/#question-about-surrounding-parentheses,但在我看来,这样做可以简单地解释为什么上面的第一个例子可以工作。
即使表现有差异(我非常怀疑,但是出于参数的原因),**并不重要。**您将操纵DOM对象,循环播放等等。我们在这里谈论的是数百万到数十亿的CPU周期。除非你正在运行一些延迟的微基准测试,否则你将永远不会注意到你可能会保存的周期。 – cHao 2012-02-03 15:08:11
对性能的原因我并不感兴趣(尽管我很好奇是否有最小的性能差异) - 我只是想知道js引擎在解释(...)时会做什么(...) – wheresrhys 2012-02-03 15:09:55
在几乎所有情况下, '(x)'和'x'在语法上是有效的,'(x)'完全等同于'x'。我知道的唯一例外是函数声明,它实际上是非法的表达式的一部分,但是当用括号或其他方式用作表达式的一部分时,函数声明变为函数*表达式*。这有点奇怪,但它有效。 – cHao 2012-02-03 15:13:55