何时使用自包含函数(闭包),何时不使用自包含函数

When to use a self containing function(closure) and when not to use one

本文关键字:函数 包含 何时不 何时使 闭包      更新时间:2023-09-26

最近有人要求我把我所有的代码都包含在一个自包含函数中。我知道闭包用于访问说明符(私有,公共)的目的,这些说明符在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 将中断。

使用闭包是一种预防性最佳实践,可避免出现名称空间冲突问题,其中两个不同的代码段使用相同的名称而没有意识到这一点。

您应该始终使用它们,除非您有特定原因不这样做。 例如,如果两段代码需要访问相同的值 - 但是在使用全局变量之前,您需要非常非常仔细地考虑。