可能重複:
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