2016-05-03 3 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

あなたは実際にを匿名関数にラップしてください。その返り値ではなく、関数anonの最後に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(); 
});