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. 为什么用匿名函数包装角码控制器代码?
- 2. 多个匿名Python函数的包装
- 3. JavaScript匿名函数
- 4. 在Matlab中使用匿名函数封装代码?
- 5. 倾销的源代码匿名函数
- 6. javascript onclick,匿名函数
- 7. Javascript防止匿名函数?
- 8. Javascript匿名函数同步
- 9. JavaScript匿名函数语法
- 10. javascript匿名setTimeout函数
- 11. JavaScript中的匿名函数
- 12. removeEventListener匿名函数的javaScript
- 13. Javascript匿名函数问题
- 14. 插入JavaScript代码放到匿名函数范围
- 15. 用另一个调用包装匿名函数
- 16. Golang函数包含匿名作用域
- 17. 奇怪匿名的JavaScript函数调用
- 18. Javascript中的匿名函数引用
- 19. 的Javascript匿名函数调用
- 20. 函数javascript:匿名但有名字?
- 21. 匿名代码块
- 22. JavaScript的参数匿名函数
- 23. JavaScript的参数匿名函数
- 24. 使用匿名函数将代码转换为PHP 5.2
- 25. 在匿名函数中调用匿名函数(初始)
- 26. 包装函数和代码结构的命名
- 27. 我应该在匿名JavaScript函数中封装功能块吗?
- 28. Firefox Javascript事件匿名函数
- 29. Javascript范围内的匿名函数
- 30. 调试到javascript匿名函数