0
A
回答
3
完全合適。這通常被稱爲IIFE。
好處是:
您可以通過「下一個命名空間的工作」避免變量命名衝突 - 命名變量和設置範圍:
(function ($, DOM, ultraSelector) { $(DOM).find(ultraSelector); // $ is always jQuery })(jQuery, document, 'mySelector'); $ = false; // here $ is not jQuery anymore
你的變量保持在你的範圍管理,從未在全球範圍內進行;和
可以
'use strict'
安全地知道只有IIFE內的代碼將受到影響:(function() { 'use strict'; globalVariable = true; // will throw error var scopedVariable = true; // only accessible inside this IIFE })(); globalVariable = true; // will define a global variable var scopedVariable = true; // is not really scoped, since its scope is global
我會說,它更安全,是的。至少你的變量不容易通過瀏覽器控制檯訪問。
我強烈建議使用IIFEs的一樣,Douglas Crockford - http://javascript.crockford.com/ ......壽,他主張括號應在聲明中(function(){ }())
0
它既不是更多或更少的安全。
與命名函數進行比較時,匿名函數的缺點是隻有讀取該代碼塊時才調用它(或每個父函數一次)。它不能通過名稱來調用。
與命名函數相比,匿名函數的優點是語法更短。
但是,如果問題是是否使用這個匿名函數作爲包裝,我真的沒有看到任何優勢。這只是增加額外的代碼。
編輯:如果你的匿名函數稍微長一點,並且包含變量,我可以看到它是有用的,以避免使用這些變量名污染全局範圍。但在你的例子中,情況並非如此。討論如何對名稱空間有用的討論:https://stackoverflow.com/a/2421949/4992551。
相關問題
- 1. 包裝成匿名函數的JavaScript代碼不工作
- 2. 爲什麼用匿名函數包裝角碼控制器代碼?
- 3. 多個匿名Python函數的包裝
- 4. javascript匿名函數
- 5. JavaScript匿名函數
- 6. 在Matlab中使用匿名函數封裝代碼?
- 7. PHP將代碼注入匿名函數
- 8. 傾銷的源代碼匿名函數
- 9. 以匿名函數訪問此代碼
- 10. javascript onclick,匿名函數
- 11. 的Javascript:匿名函數
- 12. JavaScript匿名函數語法
- 13. javascript匿名函數語法
- 14. Javascript匿名函數同步
- 15. removeEventListener匿名函數的javaScript
- 16. 的JavaScript匿名函數
- 17. Javascript防止匿名函數?
- 18. Javascript匿名函數問題
- 19. JavaScript錯誤匿名函數
- 20. javascript匿名setTimeout函數
- 21. JavaScript中的匿名函數
- 22. 插入JavaScript代碼放到匿名函數範圍
- 23. Ruby代碼塊與JavaScript匿名函數的區別
- 24. 匿名函數包裝局部變量並返回新函數
- 25. 用另一個調用包裝匿名函數
- 26. Golang函數包含匿名作用域
- 27. 爲什麼你必須用匿名函數包裝回調?
- 28. 調用嵌套匿名函數(JavaScript的)
- 29. 的Javascript匿名函數用例
- 30. 然後調用Javascript匿名函數