每个函数都应该是一个闭包吗?

Should every function be a closure?

由于闭包和稍后使用其封闭变量调用函数的能力似乎是 javascript 功能的一大优势,我发现自己经常使用以下结构:

var func;
func = function (args) {return function (moreArgs) {
    Do something;
};};

这是正常的 javascript 编程还是 problem/trap 以这种方式实现所有功能?我没有看到任何缺点,并且这种模式总是设置一个具有闭包潜在好处的函数......能够传递它并在以后执行它。

需要闭包的时候,可以这样调用两次:

func()(parms);

...但这种情况很少见。

这似乎在任何情况下都能正常工作。这是应该在 Javascript 中设置函数的方式还是过度使用闭包?这种方法似乎没有任何 material 缺点。

When I don't need the closure, I just call it twice like this:

func()(parms);

你有理由不这样做。大多数时候这是不必要的,而且通常是非常规的。坚持基础知识,这样您的代码就不会成为一个离奇的孤岛。并不是说该模式永远不合适 - 它是 - 但绝对不要无缘无故地一直这样做。

你正在尝试做的事情,有点像 function currying. But again there is the words 'sort of'. This 指导如何正确地做,如果你有兴趣的话。

尽量在需要的时候使用闭包。因为如果你不知道自己在做什么,闭包会导致严重的内存泄漏。 google optimization

Creating a closure is significantly slower than creating an inner function without a closure, and much slower than reusing a static function