是否每个函数都是闭包?

Should every function be a closure?

本文关键字:闭包 函数 是否      更新时间:2023-09-26

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

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

这是正常的javascript编程还是有问题/陷阱与实现所有功能这种方式?我没有看到任何缺点,这种模式总是为函数设置闭包的潜在好处……具有传递和稍后执行的能力。

当需要闭包时,可以像这样调用两次:

func()(parms);

…但这种情况很少发生。

这似乎在任何情况下都工作得很好。这是函数应该在Javascript中设置的方式,还是过度使用闭包?这种方法似乎没有什么实质性的缺点。

你要做的,就是所谓的函数套用。但是这里还是有"sort of"这个词。如果你感兴趣的话,下面是如何正确操作的指南。

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

创建一个闭包比创建一个没有闭包的内部函数要慢得多,也比重用一个静态函数要慢得多

当我不需要闭包时,我就像这样调用它两次:

func()(parms);

这就是你不做这件事的原因。大多数时候,这是不必要的,而且通常是非常规的。坚持基本原则,这样你的代码就不会是一个奇怪的孤岛。并不是说这种模式永远不合适——它确实不合适——但绝对不要无缘无故地一直这样做。