回答
包裝括號僅用於強制解析器將結構解析爲函數表達式,而不是函數聲明。這是必要的,因爲調用函數聲明是非法的,但調用函數表達式是合法的。
爲此,調用圓括號的位置並不重要。你如何強制函數被解析爲表達式也無關緊要。下面將工作一樣好:
如果你決定使用包裝括號(分組運算符),然後只需記住,JSLint will tell you to move the invoking parentheses inside。這只是一種風格選擇,如果您願意,您可以忽略它。
我聽說也有加號的作品.... :-) – 2013-03-15 09:43:53
@RoyiNamir,甚至['void'](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/void )操作員工作:-) – 2013-03-15 09:46:36
@ Barmaley.exe我有嘗試它:-) – 2013-03-15 09:47:04
他們都做同樣的事情。
JSLint建議您使用第一個,在分組圓括號內執行圓括號,大概是這樣一切都整齊地組合在一起。
對於什麼是值得的,我個人認爲你的第二個例子更清晰,因爲當掃描代碼時,你可以看到執行是從函數表達式中突出的。
雖然不是重複的,但是this question涵蓋了類似的地面,因此可能值得一看。
- 1. 執行javascript代碼的不同方法?
- 2. 執行此查詢的不同方法?
- 3. 傳遞相同參數時方法執行的方式不同
- 4. 同步方法塊執行
- 5. 自執行功能與IIFE的區別
- 6. 意外的IIFE執行順序
- 7. 相同的IIFE,不同的js文件
- 8. 方法不執行?
- 9. 不同對象的方法不能同時執行(D3.js)
- 10. 並行執行相同的@Sceduled方法
- 11. 如何用不同的方法執行同一類的方法調用?
- 12. 同時執行兩個同步方法
- 13. 我怎樣才能同時執行不同的方法?
- 14. 在春季並行執行多個不同方法的調用
- 15. 不同的執行任務的方式
- 16. onPostExecute()方法不被執行
- 17. mobiscroll onShow不執行方法
- 18. 委託方法不執行
- 19. 同步方法執行時,非同步方法是否阻塞
- 20. 在Thread.join()執行後執行相同方法中的代碼
- 21. 執行的方法
- 22. 方法執行
- 23. 執行方法
- 24. 執行預先計算的事實檢查的不同方法
- 25. Akka onReceive方法是否同時執行?
- 26. 的NodeJS - 我的方法不執行
- 27. 不同的方法計算時間執行
- 28. 錯誤:EXC_BAD_ACCESS從不同的方法執行選擇器時
- 29. 使用不同的參數執行哪個方法?
- 30. 迭代Java ArrayList並根據類別執行不同的方法
不,這只是一種風格選擇。使用任何你喜歡的。但請注意[JSLint會希望你使用第一種形式](http://jslinterrors.com/move-the-invocation-into-the-parens-that-contain-the-function/)。 – 2013-03-15 09:40:35