jerome
jerome

Reputation: 2089

Understanding closure

I'm bit confused with closure in Javascript.

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

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

But why can't I wrap it in an anonymous function, it could be useful if I need to do something more :

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
});

What would be the proper way to do it ?

Upvotes: 0

Views: 49

Answers (1)

Tudor Constantin
Tudor Constantin

Reputation: 26861

You actually can wrap it in an anonymous function. You just have to call updateDomForMyBtn at the end of that anon function instead of returning it:

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();
});

Upvotes: 1

Related Questions