Javascript:嵌套私有函数 - 好还是坏?

Nic*_*ick 10 javascript nested function

我经常使用这种结构:

var example = (function () {
    function privateFn2 () {
       ...
    }
    function privateFn1 () {
       ...
    }
    return {
        publicMethod1: function () {...
        },
        publicMethod2: function () {...
        }
    };
}());
Run Code Online (Sandbox Code Playgroud)

我想知道的是:如果privateFn1是唯一调用privateFn2的函数/方法,那么将它设置为如下更好的做法?

为清楚起见,已编辑

var example = (function () {
    function privateFn1() {
        function privateFn2() {
        }
        ...
        privateFn2();
    }
    return {
        publicMethod1: function () {...
        },
        publicMethod2: function () {...
        }
    };
}());
Run Code Online (Sandbox Code Playgroud)

当然,这是一个非常简单的例子.问题是我有很多私有函数,我想知道嵌套是否被很好地考虑.我认识到这很可能是一个偏好问题,但任何建议都会感激不尽.

谢谢.

Pet*_*ter 5

这取决于实际情况.如果你有几个只与另一个私有函数相关的私有函数,那么这可能就是对象或类包含更多功能的情况.

以下是一些问题:

  • 这些私人功能有副作用吗?也就是说,他们是否操纵任何封闭的财产?如果没有,这是一些可以静态实现并单独包含的通用逻辑吗?或者,这些私有函数是否操纵可以移动到另一个类或对象的属性子集?
  • 私有函数是否是在更大的算法或控制函数中使用的简单任务特定的辅助函数; 比如用于排序数组的过滤函数,还是其他一些迭代回调?如果是这样,那么将这些函数嵌套在内部并使它们超出主对象的范围可能实际上更清晰.其他任何代码都需要这些功能吗?
  • 主要私人功能会被调用多少次?如果它将被非常频繁地调用(在循环内或在定时器间隔内),那么将私有函数嵌套在内部可能会产生可测量的开销 - 如果仅偶尔调用私有函数,则可能忽略不计.

总是需要考虑权衡,考虑这些问题将帮助您确定最适合您特定情况的问题.