2016-05-03 70 views
0

我有点困惑与封闭在Javascript中。了解关闭

var updateDom = function(param1, param2, param3) { 
    return function(event) { 
     // Do something. 
    }; 
}; 

var updateDomForMyBtn = updateDom(param1, param2, param3); 
$btnX.on('click', function() { 
    // Do something more... 
    return updateDomForMyBtn 
}); 

会是怎样的正确方法做到这一点:

var updateDom = function(param1, param2, param3) { 
    return function(event) { 
     // Do something. 
    }; 
}; 

var updateDomForMyBtn = updateDom(param1, param2, param3); 
$btnX.on('click', updateDomForMyBtn); 

但为什么我不能把它包装在一个匿名函数,如果我需要做更多的东西它可能是有用的?

+2

什么让你觉得你不能? – slebetman

+0

你如何定义“正确”? OP的功能是什么使它不合适? – RobG

+0

为什么你不看这个问题http://stackoverflow.com/questions/111102/how-do-javascript-closures-work。 – Ajinkya

回答

1

实际上可以包装它在一个匿名函数。你只需要在这个匿名函数的最后调用updateDomForMyBtn没有返回它的:

var updateDom = function(param1, param2, param3) { 
    return function(event) { 
     // Do something. 
    }; 
}; 

var updateDomForMyBtn = updateDom(param1, param2, param3); 
$btnX.on('click', function() { 
    // Do something more... 
    updateDomForMyBtn(); 
});