何时使用自包含函数(闭包),何时不使用自包含函数
When to use a self containing function(closure) and when not to use one
最近有人要求我把我所有的代码都包含在一个自包含函数中。我知道闭包用于访问说明符(私有,公共)的目的,这些说明符在Javascript中不存在,但是关于何时使用以及何时不需要使用的绝对指南将非常有帮助。
考虑两个自动执行的闭包。 当他们都决定使用相同的变量名称而没有意识到时会发生什么? 没什么不好的,因为变量包含在闭包中。
(function() {
var x = 5;
function button1Click() { /* uses x */ }
}());
// ... elsewhere in the code
(function() {
var x = 10;
function button2Click() { /* uses x */ }
}());
如果这两段代码不包含在闭包中,则"x"值 5 将被 10 覆盖,button1Click 将中断。
使用闭包是一种预防性最佳实践,可避免出现名称空间冲突问题,其中两个不同的代码段使用相同的名称而没有意识到这一点。
您应该始终使用它们,除非您有特定原因不这样做。 例如,如果两段代码需要访问相同的值 - 但是在使用全局变量之前,您需要非常非常仔细地考虑。
相关文章:
- 此行是否包含函数声明
- 在Debian中运行包含load()和print()函数的JS脚本
- 在包含tx.executeSql的每个函数之后显示警报
- 不执行包含的页面的Javascript onload函数
- 从我自己的脚本中包含的Javascript文件中调用一个函数
- javascript函数包含两个元素和web音频api
- 是否可以将我网站上的普通javascript和css函数包含到我的angularjs应用程序中
- 如何将服务注入链接函数包含指令
- JavaScript 函数包含可以相互访问的对象
- Rethinkdb谓词函数“包含”多个值不起作用
- 将参数传递给javascript函数,该函数包含一个'-'
- 协助javascript函数包含在循环(PHP)中
- 我如何改进这个toggleClass函数包含基本重复的逻辑
- 如果 JS 函数包含在 HTML 中,我如何在浏览器控制台中全部使用 JS 函数
- 为什么javascript's . touppercase函数包含数字?
- Jquery不返回通过PHP require()函数包含的元素
- 在对象中找不到函数包含
- 传递javascript动态参数的函数包含在字符串中
- Jquery函数包含外部变量,但不能读取
- 如何将匿名函数包含到RequireJS依赖项中