每个函数都应该是一个闭包吗?
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
由于闭包和稍后使用其封闭变量调用函数的能力似乎是 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