了解关闭

时间:2016-05-03 05:22:56

标签: javascript

我对Javascript中的闭包感到困惑。

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

var updateDomForMyBtn = updateDom(param1, param2, param3);
$btnX.on('click', 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...
    return updateDomForMyBtn
});

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分: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();
});