每个功能都应该关闭吗?

时间:2015-05-26 03:15:25

标签: javascript node.js function closures

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

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

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

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

func()(parms);

......但这是一次难得的事。

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

2 个答案:

答案 0 :(得分:3)

  

当我不需要关闭时,我只是这样称呼它两次:

func()(parms);

你有理由不这样做。大多数时候这是不必要的,而且通常是非常规的。坚持基础,所以你的代码本身并不是一个奇怪的岛屿。并不是说这种模式永远不合适 - 它是 - 但绝对不会无缘无故地完成它。

答案 1 :(得分:3)

你想做什么,有点叫function currying。但是又有一些词语'。如果您感兴趣,This会指导如何正确执行此操作。

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

  

创建闭包比创建没有闭包的内部函数慢得多,并且比重用静态函数慢得多