函数返回函数在JavaScript中处理

时间:2013-04-25 07:20:18

标签: javascript functional-programming closures

我已经差不多半年了,因为我不断学习javascript并开始更认真地使用它。 JS具有C语法和其他部分,如闭包,动态类型,可选的paramate等。

仍然没有看到他的力量的语言功能是:返回功能的功能

function func(){
   return function(){
       ....
      return result;
   };
};


func()();

它非常酷,我知道这是函数式语言的正常特性,但我从未在现实世界中使用过,我想知道我是否需要更多地使用这种方法以及在哪种情况下显示他的真正力量。

我还在jsFiddle上做了一个小例子。

2 个答案:

答案 0 :(得分:1)

绑定事件时很有用。例如:

var element1 = document.getElementById('element1');
var element2 = document.getElementById('element2')

element1.addEventListener('click', someEventHandler('action1'));
element2.addEventListener('click', someEventHandler('action2'));

function someEventHandler(act){
    return function(e){
       switch (act){
           case 'action1':
               // do something;
           break;
           case 'action2':
               // do other thing
           break;
       }
    }
}

请参阅fiddle

答案 1 :(得分:1)

另一个用例:为第一次和后续运行执行不同操作的函数:

function test() {
    alert("the first call");
    test = function() {
        alert("new function");
    }
}