2016-05-03 74 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(); 
});