javascript模块模式与功能

时间:2013-09-23 20:08:46

标签: javascript module-pattern

比较这两个代码 第一:

function initializeView() {}
function init() {
    initializeView();
}

第二

function init() {
    (function initializeView() {})();
}

如果只在init()中调用initializeView(),那么哪一个更好? (我认为他们做了同样的工作)

编辑: 我没有考虑全局命名空间,因为所有这些都在Class中。

var MyObject = (function() {
    ...
    function init() {}
    ...
})();

1 个答案:

答案 0 :(得分:2)

第一个使用不必要的变量污染全局命名空间,而第二个创建不必要的闭包和/或在init的每次调用时创建一个额外的函数对象。

假设每initializeView只调用init()一次(正如您的IEFE建议的那样),最好只是内联代码。

如果您需要将其作为多次调用的函数,我建议

var init = (function() {
    function initializeView() {}
    return function init() {
        …
        initializeView();
        …
    };
}());