事件回调的最佳位置在哪里? (匿名或命名)

时间:2013-06-11 14:10:23

标签: javascript

这是一个有点痴迷的问题。但我正在努力使我的代码库更加一致。在某些地方,我使用自己的函数进行回调,而在其他地方,我会在事件监听器中匿名内联。

我想要一致的方法来做到这一点。

这只是一个随意的设计选择(翻转硬币并选择一个)或者是否有最好的练习方法。

这是我能找到的最短的例子。

NS.parsel({
    Name: 'MSimOut',
    S: {
        Page:             SPage,
        Storage:          SStorage,
        AniFlipMediaPane: MSimMediaPane
    },
    E: {
        signout_button: '#signout_button'
    },
    init: function () {
        var self = this;

         // anonymous inline function, should I move out as a named function and call using bind?

        self.E.signout_button.addEventListener("click", function () {
            self.S.AniFlipMediaPane.run('mi_about');
            self.S.Page.flip('sp');
            self.S.Storage.clear();
        }, false);
    },

    // or give a name like this?

    clicked: function () {
        self.S.AniFlipMediaPane.run('mi_about');
        self.S.Page.flip('sp');
        self.S.Storage.clear();
    }
});

1 个答案:

答案 0 :(得分:2)

这取决于具体情况。对于事件处理程序,我倾向于将其作为匿名函数,特别是如果函数很小并且有一种简单的方法来调用处理程序(在jQuery中为EG:.click())。这是编写代码的更简单,更直接的方法。

另一方面,如果你有一个非常大的函数或者将从事件处理程序以外的地方显式调用,那么将它作为命名函数保留可能会更清晰。